scrapy多个爬虫公用一些中间件、pipelines

使用python3

请求头headers:user-agent、代理ip,这些放在一个工程项目里,有的爬虫是需要中间件的或者根据反爬添加相应的条件,那这样的情况下怎么办?

1.中间件处理默认带上请求头,不带启用ip代理功能

spiders文件夹下的爬虫类添加属性

中间件处理

这样不管爬虫那边有没有添加属性,middlewares里就是会默认

2.有些情况下请求头会带上cookie、referer,这样的话,只需要user_agent = False,这样在爬虫里面编写自己需要的headers

那么多的爬虫,每一个可能数据格式、存数据库不同,怎么区分它们呢?

1.在items里面做文章

每一个爬虫的数据可能都要创建items类,我们把公用的部分提出来,写到基类里面去!

2.根据items判断pipelines入库

一定是items项目类,不能使用基类!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy 内置了多线程支持。默认情况下,Scrapy 使用单线程来执行爬虫,但是可以通过修改 `CONCURRENT_REQUESTS` 和 `CONCURRENT_REQUESTS_PER_DOMAIN` 等设置来启用多线程支持。 具体来说,可以使用以下步骤启用多线程支持: 1. 在 `settings.py` 文件中设置 `CONCURRENT_REQUESTS` 和 `CONCURRENT_REQUESTS_PER_DOMAIN`。例如,可以将 `CONCURRENT_REQUESTS` 设置为 16,将 `CONCURRENT_REQUESTS_PER_DOMAIN` 设置为 8,表示同时最多有 16 个请求在运行,并且每个域名同时最多有 8 个请求在运行。 ``` CONCURRENT_REQUESTS = 16 CONCURRENT_REQUESTS_PER_DOMAIN = 8 ``` 2. 修改 Spider,使其能够支持多线程。可以通过设置 `custom_settings` 属性来实现。例如,可以设置 `DOWNLOAD_DELAY` 为 0,这将禁用爬虫的下载延迟,使其更加适合多线程。 ``` class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] custom_settings = { 'DOWNLOAD_DELAY': 0, } def parse(self, response): # parse the response ``` 3. 运行爬虫时,使用 `-s CONCURRENT_REQUESTS=n` 选项来设置同时运行的请求数量。例如,可以使用以下命令来启动一个同时最多有 32 个请求在运行的爬虫: ``` scrapy crawl myspider -s CONCURRENT_REQUESTS=32 ``` 使用多线程爬虫可以提高爬取效率,但也需要注意避免对目标网站造成太大的负担。同时,多线程爬虫可能会导致一些不可预知的问题,例如网站反爬虫机制可能会误判为攻击行为。因此,在使用多线程爬虫时,需要谨慎考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值