自动抓取网页数据(大数据初学者了解并动手实现自己的网络爬虫(图))

优采云 发布时间: 2021-10-01 04:19

  自动抓取网页数据(大数据初学者了解并动手实现自己的网络爬虫(图))

  网络爬虫是从互联网上打开数据采集的重要手段。在这种情况下,使用Python的相关模块开发了一个简单的爬虫。实现从某本书网站中自动下载感兴趣的图书信息的功能。实现的主要功能包括单页图书信息下载、图书信息提取、多页图书信息下载。本案例适合大数据初学者了解并实现自己的网络爬虫。

  1、任务描述和数据来源

  从当当网的搜索页面,按照关键词进行搜索,使用Python编写爬虫,在搜索结果中自动爬取该书的书名、出版社、价格、作者、书籍介绍。

  当当搜索页面:/

  2、单页图书信息下载2.1个网页下载

  Python 中的 requests 库可以自动帮我们构造一个请求对象来向服务器请求资源,并为服务器资源返回一个响应对象。如果只需要返回 HTML 页面的内容,可以直接调用响应的 text 属性。下面的代码中,我们首先导入requests库,定义当当搜索页面的URL,设置搜索关键词为“机器学习”。然后使用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浏览器直接打开网址/?key=machine learning。然后选择任意图书信息,右击“检查”按钮。不难发现,搜索结果中每本书的信息都是页面上的一个标签,如下图所示:

  

  点击第一个标签,发现下面还有几个

  标签,类别有“名称”、“详情”、“价格”等,这些标签下存储着商品的标题、详情、价格等信息。

  

  我们以提取书名信息为例进行具体说明。点击li标签下class属性为name的p标签,我们发现书名信息存储在name属性为“itemlist-title”的标签的title属性中,如下图所示:

  

  我们可以用xpath直接把上面的定位信息描述为//li/p/a[@name="itemlist-title"]/@title。接下来,我们使用 lxml 模块提取页面中的书名信息。xpath的使用请参考/xpath/xpath_syntax.asp。

  page = etree.HTML(content_page) #将页面字符串解析成树结构

book_name = page.xpath('//li/p/a[@name="itemlist-title"]/@title') #用xpath提取出书名信息。

book_name[:10] #打印提取出的前10个书名信息

  

  同理,我们可以提取图书出版信息(作者、出版社、出版时间等)、当前价格、星级、评论数等。该信息对应的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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线