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']