• 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']
        
  • 相关阅读:
    Window7中Eclipse运行MapReduce程序报错的问题
    Hadoop以及其外围生态系统的安装参考
    《node.js开发指南》第五章与新版Node变化太大的一些问题
    打造开发React Native的Sublime
    幸福
    近日阅读记录
    react中属性默认值是true?
    git撤销操作总结
    React Native中的DeviceEventEmitter.addListener与DeviceEventEmitter.emit
    React父子组件的一个混淆点
  • 原文地址:https://www.cnblogs.com/jake-jin/p/11787195.html
Copyright © 2020-2023  润新知