Spider Scrapy 框架爬虫
scrapy 是一款常用的爬虫框架,可以实现分布式爬虫和高性能的爬虫
scrapy 框架的创建实在cmd命令行下进行的:
首先要在命令行下转到你要创建的文件夹下:
cd 目标文件夹路径 创建的是一个工程
创建命令:
scrapy startproject 工程名称 (自己随意)
创建完工程后要进入到工程文件夹下,穿件爬虫(spider)文件
创建爬虫文件:
scrapy genspider 爬虫文件名 目标url(初始的URL必须要有)
红色部分是自己加的代码,解析数据的,其他的都是创建完成后的原始代码
import scrapy class 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的ID
data_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文件结果出现乱码,暂时不知道是什么原因)
自己不知道要干什么的时候就想想你想要什么。
不知道想要什么的时候。
就多想想,说不定想着想着就知道自己想要什么了。
想好了就去试试,说不定你就能拿到你想要的对象了,你不试一下,你就是想你怎么想也拿不到! anyway ..... what ever....