从网页抓取数据(大数据初学者了解并动手实现自己的网络爬虫(图))
优采云 发布时间: 2022-04-06 16:16从网页抓取数据(大数据初学者了解并动手实现自己的网络爬虫(图))
网络爬虫是从互联网打开数据采集的重要手段。本例使用Python的相关模块开发一个简单的爬虫。实现从一本书网站中自动下载感兴趣的图书信息的功能。实现的主要功能包括单页图书信息下载、图书信息提取、多页图书信息下载。本案例适合大数据初学者了解和实现自己的网络爬虫。
1、任务描述和数据来源
从当当搜索页面,根据关键词进行搜索,使用Python编写爬虫,自动爬取搜索结果中书籍的书名、出版商、价格、作者、书籍介绍等信息。
当当网搜索页面:
2、单页图书资料下载2.1网页下载
Python中的requests库可以自动帮助我们构造一个请求对象,用于向服务器请求资源,并返回一个响应对象,用于服务器资源。如果只需要返回 HTML 页面的内容,可以直接调用响应的 text 属性。在下面的代码中,我们首先导入 requests 库,定义当当搜索页面的 URL,并将 search关键词 设置为“机器学习”。然后使用 requests.get 方法获取网页内容。最后,打印并显示网页的前 1000 个字符。
import requests #1. 导入requests 库
test_url = 'http://search.dangdang.com/?key='+ '机器学习' #2. 设置网页的URL地址
content_page = requests.get(test_url).text #3. 执行页面请求,返回页面内容
print(content_page[:1000]) #4.将页面的前1000个字符打印显示出来
2.2本书内容分析
让我们开始解析页面并分析源代码。这里我使用Chrome浏览器直接打开URL机器学习。然后选择任何书籍信息,右键单击“检查”按钮。不难发现,搜索结果中每本书的信息都是页面上的一个标签,如下图所示:
点击第一个标签,发现下面还有几个
标签,分类为“名称”、“详细信息”、“价格”等。这些标签存储了产品的标题、详细信息、价格等信息。
我们以书名信息的提取为例进行详细说明。点击li标签下class属性为name的p标签,我们发现书名信息存储在一个name属性值为“itemlist-title”的标签的title属性中,如下图:
我们可以使用 xpath 将上述定位信息直接描述为 //li/p/a[@name="itemlist-title"]/@title 。接下来我们使用 lxml 模块从页面中提取书名信息。请参考xpath的使用。
page = etree.HTML(content_page) #将页面字符串解析成树结构
book_name = page.xpath('//li/p/a[@name="itemlist-title"]/@title') #用xpath提取出书名信息。
book_name[:10] #打印提取出的前10个书名信息
同理,我们可以提取图书的出版信息(作者、出版商、出版时间等)、当前价格、星级、评论数等。这些信息对应的xpath路径如下表所示。
信息项
xpath 路径
书名
//li/p/a[@name="itemlist-title"]/@title
出版信息
//li/p[@class="search_book_author"]
时价
//li/p[@class="price"]/span[@class="search_now_price"]/text()
星星
//li/p[@class="search_star_line"]/span[@class="search_star_black"]/span/@style