python之scrapy框架基础搭建

一、创建工程

#在命令行输入
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']
    
原文地址:https://www.cnblogs.com/jake-jin/p/11787195.html