1、建立工程python
#在命令行輸入
scrapy startproject xxx #建立項目
2、寫item文件json
#寫須要爬取的字段名稱
name = scrapy.Field() #例
3、進入spiders寫爬蟲文件dom
①直接寫爬蟲文件本身手動命名 新建一個.py文件便可
②經過命令方式建立爬蟲文件 scrapy gensipder yyy "xxx.com" 命名不能於工程名相同,爬取的域名區域
4、寫爬蟲文件scrapy
start_urls #爬蟲第一次執行時爬取的網址域 初始換模型對象
iteam = TencentItem() #將iteam文件引入 iteam['xxx']= each.xpath("./td[1]/a/text()").extract()[0]
#xpath返回選擇性的列表,extract將其轉換成字符串,再取出列表中的第一個字符。 yield iteam #放到管道文件 #因爲爬取的頁面不止一頁,因此須要調用請求回調函數。 #將請求從新發送給調度器入隊列,出隊列,交給下載器下載 #每次處理完一頁的頁面請求後,發送下一頁的頁面請求 yield scrapy.Request(url, callback = self.parse)
#函數名parse,有請求才會觸發回調函數,yield發送到調度器
//寫在每次循環執行完的外面。
5、寫管道文件ide
首先定義初始化方法 def __init__(self): self.filename=open("xxx", "w") def process_item(self, iteam, spider): dict(iteam) #字典轉換成python的格式 json.dumps(dict(iteam), ensure_ascii = False) + "\n" #轉換成json格式 self.filename.write(text.encode("utf-8")) #若是出現沒法寫入問題,要加上.encode("utf-8") return iteam 關閉文件 def close_spider(self, spider): self.filename.close()
6、配置settings文件
找到ITEM_PIPELINES配置項,配置到管道文件函數
7、設置請求報頭
在settings文件中找到DEFAULT_REQUEST_HEADERS配置url
8、運行程序spa
scrapy crawl 文件名
crawlspider建立應用改寫命令行
1、建立工程code
scrapy gensipder -t crawl tencent tencent.com #導入crawlspider類和rule規則 #from scrapy.spider import CrawlSpider, Rule #導入連接規則匹配類,用來提取符合規則的連接 #from scrapy.linkextractors import LinkExtractor #from TencentSpider.items import TencentItem class TencentSpider(CrawlSpider): #繼承CrawlSpider類 name = "xxx" #爬蟲名 allow_domains = [] #控制爬蟲的爬取域 start_urls = [] #正則匹配規則,Response裏頁面信息中符合規則的數據 pagelink = LinkExtractor(allow=("start=\d+")) #批量調用請求方法 rules = [ #pagelink=url, 跟進連接調用方法,是否跟進連接True Rule(pagelink, callback = "parseTencent", follow = True) ] 鬥魚 將json格式轉換成python格式,data段是列表 data = json.loads(response.text['data']