Crawlscrapy获取果壳问答信息
生活随笔
收集整理的這篇文章主要介紹了
Crawlscrapy获取果壳问答信息
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
思路:
1、果殼網(wǎng)精彩問(wèn)答界面url=https://www.guokr.com/ask/highlight/
2、自動(dòng)獲取多頁(yè)url
3、自動(dòng)獲取每頁(yè)問(wèn)答界面url
4、使用css解析數(shù)據(jù),獲取訪問(wèn)界面問(wèn)題標(biāo)題、排位第一的答案文字和圖片信息
一、準(zhǔn)備工作
創(chuàng)建一個(gè)scrapy project:
scrapy startproject GUOKE創(chuàng)建crawspider file
scrapy genspider -t crawl guoke guoke.com二、構(gòu)建框架
(1) 聲明items
import scrapyclass GuokeItem(scrapy.Item):question = scrapy.Field()answer = scrapy.Field()img = scrapy.Field()(2) spider.py
from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from GUOKE.items import GuokeItemclass GuokeSpider(CrawlSpider):name = 'guoke'allowed_domains = ['guokr.com']start_urls = ['https://www.guokr.com/ask/highlight/']rules = (# 指定規(guī)則, 獲取所有頁(yè)面的url,無(wú)需解析,當(dāng)callback為None,follow默認(rèn)為TrueRule(LinkExtractor(allow='page=\d+')),#獲取每頁(yè)對(duì)應(yīng)的問(wèn)答詳情頁(yè)url,解析數(shù)據(jù),不需要進(jìn)一步提取#檢查時(shí)發(fā)現(xiàn)提取出一個(gè)無(wú)關(guān)url,使用deny去掉Rule(LinkExtractor(allow='question',deny=('new')),follow = False,callback='parse_item' ))#解析函數(shù)名不可設(shè)為parse,會(huì)與內(nèi)置函數(shù)名重復(fù)而將其覆蓋,影響抓取運(yùn)行def parse_item(self, response):#print(response.url)item = GuokeItem()#使用CSS選擇器獲取問(wèn)答詳情頁(yè)問(wèn)題標(biāo)題item['question'] = response.css('#articleTitle::text').extract_first().strip()#獲取問(wèn)答詳情頁(yè)排名第一的答案文字及圖片item['answer'] ='\n'.join(response.css('.answer-txt p::text').extract())item['img'] = '\n'.join(response.css('.answer-txt img::attr(src)').extract())yield item(3) middlewares.py
通過(guò)下載中間件設(shè)置User-Agent
(4)pipelines.py
設(shè)置管道,連接數(shù)據(jù)庫(kù),保存數(shù)據(jù)
(5)setting.py
一般寫好一部分代碼就開啟相應(yīng)的設(shè)置版塊,以防忘記
三、運(yùn)行spider
(1)打開MongoDB服務(wù)器,啟動(dòng)客戶端
(2)運(yùn)行spider
scrapy crawl guoke四、進(jìn)入數(shù)據(jù)庫(kù)查看
ok啦
總結(jié)
以上是生活随笔為你收集整理的Crawlscrapy获取果壳问答信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《网站建设规划书范文》
- 下一篇: 医疗器械——与研发有关的法律法规和标准—