注意:原视频中的链接 http://www.infoq.com/cn/news 已失效,可以替换为 http://www.infoq.com/news ,然后再将代码中的 news_type_block 改为 items_content 即可。
作者回复: 如果是想系统的爬取一个网站,建议使用框架来实现,视频介绍的是爬虫的原理和自己编写爬虫,建议你参考一下scrapy框架,提供一个中文文档地址: https://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html
作者回复: for in是python的遍历某个对象的语法噢
作者回复: headers内容来源于标准的http协议的定义,一般我会先使用浏览器访问目标网站,发起第一次请求前,按F12出现浏览器的调试界面,在请求时就可以抓到对应的headers 。当然还能抓到很多其他有用的信息噢
作者回复: 可以使用,另外python 有一个 fake-useragent 第三方包,可以导入随机的header
作者回复: 是不是系统安装了多个版本的python? 运行你的代码的python没有安装bs4?
作者回复: 可以用英文站来练习,改版不大,参考 https://github.com/wilsonyin123/geekbangpython/tree/master/python_demo
作者回复: 可以用其他静态页面试一下,网站改版了
作者回复: 动态网页用selenium+chrome(phantonJS)
作者回复: 可以将抓取网页部分的代码单独拆分出来,单独运行,看看是否有输出
作者回复: 您好,因为infoq在视频录制之后网页更新过,因此需要根据具体的报错来调整爬虫的代码。 乱码一般是因为 http头部“ "Accept-Encoding": "gzip, deflate, br",” 信息传递的问题, 考虑去掉gzip 再试一下