一、创建工程
#在命令行输入
scrapy startproject xxx #创建项目
二、写item文件
#写需要爬取的字段名称
name = scrapy.Field() #例
三、进入spiders写爬虫文件
①直接写爬虫文件自己手动命名 新建一个.py文件即可
②通过命令方式创建爬虫文件 scrapy gensipder yyy "xxx.com" 命名不能于工程名相同,爬取的域名区域
四、写爬虫文件
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, dont_filter=True)
#函数名parse,有请求才会触发回调函数,yield发送到调度器
//写在每次循环执行完的外面。
五、写管道文件
首先定义初始化方法 def __init__(self): self.filename=open("xxx", "w") def process_item(self, iteam, spider): dict(iteam) #字典转换成python的格式 json.dumps(dict(iteam), ensure_ascii = False) + " " #转换成json格式 self.filename.write(text.encode("utf-8")) #如果出现无法写入问题,要加上.encode("utf-8") return iteam 关闭文件 def close_spider(self, spider): self.filename.close()
六、配置settings文件
找到ITEM_PIPELINES配置项,配置到管道文件
七、设置请求报头
在settings文件中找到DEFAULT_REQUEST_HEADERS配置
八、运行程序
scrapy crawl 文件名
crawlspider创建应用改写
一、创建工程
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']