2018.04
1 概述
主题网络爬虫, 根据一定的网页分析算法过滤与主
题无关的链接保留主题相关的链接井将其放入待抓取的
URL队列; 然后根据一定的搜索策略从队列中选择下一
步要抓取的 URL, 并重复上述过程, 直到达到某一条件
时停止[1]。 如果采取手动从互联网中获取多网页信息,
耗费人力和精力过大, 而网络爬虫就能很好地弥补这个
缺陷。 同时利用网络爬虫可以过滤掉很多手动采集时遇
到的无关数据, 采集数据更加便捷。 伴随着爬虫技术也
产生了众多反爬技术, 在爬取时候应注意 “礼貌” 爬
行[3], 否则会被对方限制爬行。
Python 语言代码简洁, 易学, 并且拥有多种发送
HTTP请求和解析 HTML源码的库, 故该语言十分适合
用来编写爬虫程序。 基于 Python3.5爬取当当网最新上
架图书, 获取图书的基本信息并将获取的信息以 Word
文档的形式展现。 并且在二次爬取图书信息时可以对比
前一次爬取记录, 将更新的图书信息存储而不重复存储
已经爬取过的图书信息, 方便购书者直观地了解最新上
架的图书信息。
2 爬虫的设计
2.1 编程环境
Window10操作系统, Python3.5, IDE:PyCharm。
2.2 爬取的起始页面
爬取的新书上架包括小说、 文学、 烹饪、 经济、 管
理等分类栏目, 小说栏目的起始采集页面为 http://book.
dangdang.com/list/newRelease_C01.03_P1.html, 观察各栏
目起始页面 URL规律, 可构造 urlStart='http://book.dang-
dang.com/list/newRelease_C01. {} _P1.html'.format (v), 每
个分类栏目对应相应的变量 v值。
2.3 模拟浏览器访问
一些站点不喜欢非人为访问, 因此应该尽量让爬虫
模拟人真实访问的样子, 网站是通过浏览器发送请求头
中的 User-Agent的值来判断浏览器身份, 把 User-Agent
修改成对应的浏览器。 当把模拟的访问方式改成移动设
备中的浏览器时, 则会得到一个没有广告以及其他干扰
的简化的更易爬虫采集的网站版本[2]。 利用 requests库发
送 GET请求, 返回网页信息, 若无法得到页面信息利
用 try-except则会显示 “页面获取出错”。
def getResponseContent(self, urls):
try:
headers = {"User-Agent":"
Mozilla/5.0 (Windows NT10.0;WOW64)AppleWebKit/
537.36 (KHTML,like Gecko) Chrome/61.0.3163.91 Sa-
fari/537.36"}
html = requests.get(urls, headers=headers)
return html.text
except:
print("页面获取出错")
2.4 获取总页面数
新书上架栏目的需要翻页爬取, 利用 Beautiful-
Soup库来解析返回的网页信息, 用 Chrome 的开发者
工具找到最后一个页面对应的标签 find ( 'div', { "
class" :" fanye_bottom"}) 中的 ‘a’ 标签。 观察翻页后
的页面 URL比较可得第一页为 P1, 第二页为 P2, 以
此类推。 可构造出每一页 的 URL, 遍历每个页面即可
爬取信息。
基于 Python3爬虫获取