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爬虫获取