请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

自己写的基础爬虫,能爬到数据,用 scrapy 框架则爬不到数据

我自己写了基础爬虫

def get_icibe_word(english):
    # 抓取单词页面
    word_text = requests.get("www.iciba.com/python", headers=headers).text
    sel = Selector(text=word_text)

这个爬虫是能爬到数据的
但是用了 scrapy 框架,却爬不到数据
我使用了反爬的UserAgent和动态 IP,都无法执行
def parse(self, response):里面的方法。

class WordSpider(scrapy.Spider):
    name = 'word'
    allowed_domains = ['iciba.com']
    start_urls = ['http://www.iciba.com/setting']

    print("开始")

    def parse(self, response):
        print("成功打印页面")
        print(response)
    print("结束")

如果使用课程的 csdn.net 地址,是能够执行并且返回打印 200页面的。但是如果请求的是 iciba.com。则没有任何执行。
这是因为更高级的反爬策略吗?但为什么我最基础的爬虫却能够爬到数据。

正在回答 回答被采纳积分+3

2回答

提问者 两努 2020-02-22 18:21:47

老师,我复制黏贴你的代码进去,成功捕获到网页了,也就是说我其他代码都没有问题,就是 useragent 有问题而已。那么如何更换user-agent的库呢。

0 回复 有任何疑惑可以回复我~
  • bobby #1
    你可以自己通过浏览器维护一个简单的user-agent池, 因为第三方的 你也不知道对方一共维护了多少个以及这些里面哪些不被支持
    回复 有任何疑惑可以回复我~ 2020-02-24 12:39:25
bobby 2020-02-22 16:19:59

一般这种情况是不可能出现的,我已经试过你说的这个问题了 我通过在settings中设置

DOWNLOADER_MIDDLEWARES = {
   # 'ScrapyRedisTest.middlewares.MyCustomDownloaderMiddleware': 543,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':12,
}
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'

是没有问题的,所以如果你自己设置了组件随机切换useragent还是出现这个问题就有理由怀疑 你使用的库中维护的user-agent某些不被网站支持

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信