关于使用scrapy爬虫框架遇到的一些问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao_5352269/article/details/82252066

使用scrapy框架爬取美团的信息

响应的数据基本有用的都在js里,城市数据全在一个json里,需要取出该json里面的省和市

为了匹配市一级的数据,利用读取配置文件的方式,匹配美团中市数据,获取url中的简拼

通过Python中的configparser模块读取配置,代码里的参数都没写,需要自己学习

import configparser

cf = configparser.ConfigParser()

cf.read()
cf.get()
碰到读取不到这个配置文件的错误,scrapy框架中第一次使用这个,最后发现是路径问题,scrapy运行时的路径是项目的根目录。修改路径后解决。将配置文件ini放在了项目的根目录

第二:

获取数据的时候,会去爬取下一页的数据,需要拼接下一页的url,然后再parse中去request拼接好的url,所以利用request.meta方法传递数据,理论上该方法可以传递任何类型的数据

    def start_requests(self):

        for i in range(len(self.urls)):
            request = scrapy.Request(url=self.urls[i], callback=self.parse)
            # 通过request的meta方法传递城市id(meta方法可以传递任何类型的数据)
            request.meta['city_id'] = self.city_ids[i]
            yield request
    def parse(self, response):
        item = StreetItem()
        county_city_id = response.meta['city_id']

第三:

就是防止403错误,请求美团的数据,会碰到403错误,在setting中添加一下代码

'''
    伪造一个用户信息,防止403
'''
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
ITEM_PIPELINES = {
   'Tencent.pipelines.TencentPipeline': 300,
}

'''
    防止403崩溃。
'''
HTTPERROR_ALLOWED_CODES = [403]

第四:

关于在scrapy中使用MongoDB数据库,如何搭建看https://blog.csdn.net/zhao_5352269/article/details/82151173

首先要确保MongoDB数据库可以远程连接,当然如果在本机上就不用考虑此问题

在setting设置

在管道文件pipelines配置

有问题,请留言,目前暂时就碰到这些问题,

在pycharm中直接运行爬虫的方法,不用每次去跑cmd

在跟目录底下建立main.py文件

from scrapy import cmdline

# 将运行的log信息全部打印到all.log文件
cmdline.execute("scrapy crawl 自己项目爬虫的名字 -s LOG_FILE=all.log".split())

猜你喜欢

转载自blog.csdn.net/zhao_5352269/article/details/82252066
今日推荐