先说解决方法:
去掉你请求头中的 Content-Length
在scrapy的过程中发送请求的时候,你会发现特别是post请求很多时候会报400的错误,明明同样的请求在requests中能请求成功,你尝试了scrapy.Request, scrapy.http.Request, scrapy.FormRequest都还是报这个错误,于是开始怀疑scrapy是不是有问题。
是的,scrapy是有问题的,因为它在背后默默做了一些操作,不像requests那么简洁,很多时候post请求都是因为你的请求头中 Content-Length这个字段造成的,把它这个参数去掉即可请求成功。
这个时候还有个疑问没有解除,那就是为何Content-Length这个字段为什么在requests中存在可以请求成功,而在scrapy中存在的话就不能请求成功呢
待续...
通常我们在一个站站点进行采集的时候,如果是小站的话 我们使用
scrapy
本身就可以满足。
但是如果在面对一些比较大型的站点的时候,单个
scrapy
就显得力不从心了。
要是我们能够多个
Scrapy
一起采集该多好啊 人多力量大。
很遗憾
Scrapy
官方并不支持多个同时采集一个站点,虽然官方给出一个方法:
**将一个站点的分割成几部分 交给不同的
scrapy
去采集**
似乎是个解决办法,但是很麻烦诶!毕竟分割很麻烦的哇
下面就改轮到我们的额主角
Scrapy
-Redis登场了!
能看到这篇文章的小伙伴肯定已经知道什么是
Scrapy
以及
Scrapy
-Redis了,基础概念这里就不再介绍。默认情况下
这是一个
POST
请求
并需要提交表单数据,所以我用了
scrapy
.FormRequest构造数据包,具体spider代
码
:
class yilicai(Spider):
name = "yilicai"
urls = "http://api.yilicai.cn/pr...
之前在抓一个网站Danaos的时候,发现能用requests和
post
man
发送
同样的header和payload的时候都能得到正确的结果,但是
scrapy
就会返回
400
错误,后来发现这是Twisted本身存在的
问题
,看了官网也没找到解决方法
spider文件在这里:
class DanspiderSpider(
scrapy
.Spider):
name = 'danspider'
scrapy
出现
400
Bad Request
问题
遇到
400
解决思路:
1.检查url连接,有的url最后有’/’ 有的没有,看看是不是这个原因造成。如有’/’,去掉试试,没有去掉试试;
2.设置
scrapy
COOKIES_ENABLED = False
1.笔者前几天由于想要下载百度文库的资料,但是苦于没有文库积分,所以在淘宝上购买了文库积分服务下载地址:https://wenkubao.cc/该平台通过提交账号、密
码
和百度文库文章地址方式获取下载地址,试了一下,不
发送
账号密
码
无法下载,于是查看源代
码
发现上图中有一个地址,打开可以看到下图浏览器中没有验证账号密
码
选项,
发送
数据包是也没有带上账号密
码
信息同时邮件中收到了下载文档这里我们就有可以操作的...
def __init__(self):
chromeoption = webdriver.ChromeOptions()
# chromeoption.add_argument('--headless') # 无头浏览器
chromeoption.a
https://blog.csdn.net/weixin_38819889/article/details/109106942
https://www.cnblogs.com/ceason/p/13935292.html
import
scrapy
class FySpider(
scrapy
.Spider):
name = 'fy'
# allowed_domains = ['www.baidu.com']
start_urls = ['https://fanyi.baid