写在前面: 快放假了, 这两天心血来潮, 自己也想学习一下爬数据, NLP 里数据才是王道, 所以自己也写了一个爬虫爬取 21 财经的某个频道的新闻数据, 仅作为学习爬虫用.
1 爬虫的组成: 解析主列表页面, 解析详细页面, 存储数据
2 使用 requests 获取页面, 使用正则或者 BeautifulSoup 解析页面, 都挺方便的.
3 存储数据采用 MongoDB.
遇到的问题:
1 requests 获取到页面后页面乱码, 百度找到的方法将获取的 html 转化为原来网页的编码即可
- HTML = requests.get(url,headers)
- raw_data = urllib.request.urlopen(url).read()
- charset = chardet.detect(raw_data)
- encoding = charset['encoding']
- HTML.encoding = encoding
2 解析子页面时一直获取不到子页面数据, 通过打印捕获的异常发现传递的子页面的 url 包含了引号, 导致连接不上子页面, 一般解析子页面时需要 strip 一下前后空格, 我用正则解析主页面竟然出现了引号.
3 一开始只使用了正则解析, 但是有些嵌套的 HTML 结构和一些包含换行空格的代码, 通过正则获取不到想要的内容, 后来尝试使用 BeautifulSoup, 通过具体的 id,class 标签去获取, 效果不错, 所以最后正则和 bs 一起用的, ok, 奥卡姆 razer, 简单有效就行.
代码:
来源: http://www.bubuko.com/infodetail-3382341.html