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

来源:13-1 课程总结

两努

2020-02-22

我自己写了基础爬虫

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。则没有任何执行。
这是因为更高级的反爬策略吗?但为什么我最基础的爬虫却能够爬到数据。

写回答

2回答

两努

提问者

2020-02-22

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

0
1
bobby
你可以自己通过浏览器维护一个简单的user-agent池, 因为第三方的 你也不知道对方一共维护了多少个以及这些里面哪些不被支持
2020-02-24
共1条回复

bobby

2020-02-22

一般这种情况是不可能出现的,我已经试过你说的这个问题了 我通过在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
0

Python爬虫工程师实战 大数据时代必备

慕课网严选精品教程,高质量内容+服务!

2388 学习 · 1158 问题

查看课程