Scarpy框架
文章平均质量分 67
埃菲尔没有塔尖
热爱学习,热爱分享,欢迎交流。
展开
-
scrapy使用cookie的三种方式
文章转载于 安卓逆向菜鸟修炼记(微信公众号),个人感觉很实用,记录下来方便回顾,想看原文的请移步公众号。1.如果是在headers中使用(这里的cookie是字符串的形式)def start_requests(self): headers = { "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280原创 2021-11-26 23:03:38 · 3390 阅读 · 3 评论 -
scrapy 解决Redirecting 301 302重定向问题
在使用Scrapy框架中URl被重定向,总是遇到这类问题:DEBUG: Redirecting (301/302) to <GET https://XXXX refer https://XXXX>解决方式:在Scrapy中的Request中添加 dont_filter=True,因为Scrapy是默认过滤掉重复的请求URL,添加上参数之后即使被重定向了也能请求到正常的数据了。在Scrapy框架中的 settings.py文件里添加HTTPERROR_ALLOWED_COD原创 2020-10-25 23:20:58 · 39907 阅读 · 7 评论 -
scrapy去重原理,scrapy_redis去重原理和布隆过滤器的使用
1.去重的应用场景:如果你只是做一些简单的爬虫,可能不会遇到这种问题,可是如果你正在做一个大型的全站爬虫,或是一个持久化的爬虫,那你一定会遇到这样的问题:刚开始爬虫速度还可以,随着待爬取的队列达到数亿级甚至更多的时候,爬虫会变得非常慢,为什么会出现这样的问题呢? 我们以scrapy为例来说明并解决这个问题。2.scrapy去重原理Scrapy 有自动去重功能,它的去重使用了 Python 中的集合。这个集合记录了 Scrapy 中每个 Request 的指纹,这个指纹实际上就是 Request 的散列原创 2020-10-17 14:35:42 · 4864 阅读 · 4 评论 -
使用Scrapy框架发送POST请求
不推荐使用scrapy框架发送post请求,配置复杂,如果在数据量大 的情况下,可以通过如下代码来实现:方法一:就是重写scrapy下面的start_requests方法scrapy默认发送的是get请求,发送post请求时需要重写start_requests(self)。import scrapyclass FySpider(scrapy.Spider): name = 'fy' # allowed_domains = ['www.baidu.com'] start_ur原创 2020-10-15 22:42:09 · 12752 阅读 · 2 评论 -
scrapy设置代理的方法
根据最新的scrapy官方文档,scrapy爬虫框架的代理配置有以下两种方法:1.使用中间件DownloaderMiddleware进行配置在settings.py文件中,找到DOWNLOADER_MIDDLEWARES它是专门用来用配置scrapy的中间件.我们可以在这里进行自己爬虫中间键的配置,配置后如下:DOWNLOADER_MIDDLEWARES = { 'WandoujiaCrawler.middlewares.ProxyMiddleware': 100,}其中Wandouji原创 2020-10-11 22:41:26 · 14917 阅读 · 0 评论 -
Scrapy中的get_project_settings 读取设置文件
1、引入from scrapy.utils.project import get_project_settings2、利用get_project_settings()读取settings.py中的属性在middlewares.py文件中读取setting属性示例代码如下:from scrapy.utils.project import get_project_settingsclass YourSpider(BaseSpider): def parse(self, response):原创 2020-10-11 22:43:44 · 1383 阅读 · 0 评论 -
scrapy 设置随机UA
爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单。1.常规设置 UA首先,说一下常规情况不使用 Scrapy 时的用法,比较方便的方法是利用 fake_useragent包,这个包内置大量的 UA 可以随机替换,这比自己去搜集罗列要方便很多,下面来看一下如何操作。首先,安装好fake_useragent包,一行代码搞定:pip install fake-useragent然后,就可以测试了:原创 2020-10-11 22:53:59 · 1649 阅读 · 0 评论 -
twisted.internet.error.TimeoutError错误的解决方法
使用scapy 爬取的时候,少数请求链接会出现请求超时,当出现请求超时时,爬虫会自动重试三次。若超过180s且三次后仍没有得到数据,就会放弃请求出现twisted.internet.error.TimeoutError 错误。此时就出现了爬取失败的情况。错误原因:当网络无法满足在180s内下载完所有的请求数量,就会出现此类错误。解决办法:这里做个示例,具体情况具体分析1、降低同时请求的数量CONCURRENT_REQUESTS = 22、 设置合适的超时时间,DOWNLOAD_TIMEOU原创 2020-10-11 22:26:00 · 1755 阅读 · 0 评论