Spider Scrapy 框架爬虫
scrapy?是一款常用的爬蟲框架,可以實現分布式爬蟲和高性能的爬蟲
scrapy?框架的創建實在cmd命令行下進行的:
首先要在命令行下轉到你要創建的文件夾下:
cd?目標文件夾路徑?創建的是一個工程
創建命令:
scrapy?startproject? 工程名稱 (自己隨意)
創建完工程后要進入到工程文件夾下,穿件爬蟲(spider)文件
創建爬蟲文件:
scrapy genspider?爬蟲文件名? 目標url(初始的URL必須要有)
紅色部分是自己加的代碼,解析數據的,其他的都是創建完成后的原始代碼
import scrapyclass QiubaiSpider(scrapy.Spider):name = 'qiubai'#allowed_domains = ['www.qiushibaike.com/text'] # 這一行推薦注釋掉,因為后面如果你有需要根據解析的URL再次進行爬取的時候,可能會出問題。 表示的是域名范圍,在這個域名下的URL才可以爬取,不是不能被爬取。start_urls = ['https://www.qiushibaike.com/text/'] # 這個URL是可以的,https://www.baidu.com 這個URL九不能被爬取的,因為上面的限制,但是上面也可以加多個域名def parse(self, response):# 建議使用想path進行內容解析,scrapy已經集成了xpath接口div_list = response.xpath('//div [@id="content-left"]/div') # xpath表達式 //div表示所有div [@id="content-left"] div的IDdata_list = []for div in div_list:# .extract() 可以將xpath返回的selector對象中的值取出 xpath返回的是一個列表,列表中的元素是selector對象# author = div.xpath('./div/a[2]/h2/text()').extract() # xpath表達式./表示的是在當前的div下 a[2] 表示這個div下的第二個a標簽 author = div.xpath('./div/a[2]/h2/text()').extract_first()# .extract_first() == extract()[0]content = div.xpath('.//div[@class="content"]/span/text()').extract()
# 將解析到的作者和內容數據封裝到字典中,然后再將字典追加到列表中,parse只能返回可迭代類型或者是空
dict = {
”author“: author,
"content": content
}
data_list.append(dict)
return data_list
接下來需要改一下配置文件(sttings.py)這個文件也是創建完工程后就有的,在里面改一下第19號,user_agent?請求頭信息?和 22行 ROBOTSTXT_OBEY?改成 False
最后就是運行了,運行也是需要在cmd命令行下進行運行
運行命令:
scrapy? crawl?爬蟲文件名 --nolog? ? ? ?# --nolog是表示不打印任何的日志
scrapy crawl?爬蟲文件名 -o?磁盤文件名.后綴? -o?表示將返回的可迭代類型的數據寫入指定的文件中? (操作后寫入csv文件結果出現亂碼,暫時不知道是什么原因)
轉載于:https://www.cnblogs.com/wei-yu/p/10401118.html
總結
以上是生活随笔為你收集整理的Spider Scrapy 框架爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UOJ最强跳蚤
- 下一篇: Python基础学习----参数和返回值