Python爬取当当、京东、亚马逊图书信息代码实例
在爬虫技术的应用中,Python是非常常见的一种语言,其强大的模块和库支持、语言简洁易学,使其成为了爬虫技术的首选语言之一。本篇文章主要讲解如何使用Python爬取当当、京东、亚马逊图书信息,以下是详细步骤:
步骤一:分析页面代码
在爬取页面信息之前,我们首先需要对目标页面的结构进行分析。在本例中,我们以当当网的图书页面为例,进入当当网图书页面,打开浏览器的开发者工具,切换到Elements选项卡中,可以看到页面的HTML结构。
我们可以发现,在页面上需要爬取的图书信息(如书名、作者、价格等)都被包含在一些HTML标签中,例如:
<li class="line2"><span class="bigimg"><a href="//product.dangdang.com/1107801548.html" name="itemlist-link" target="_blank"><img alt="Python数据分析基础教程:" src="http://img3m4.ddimg.cn/11/35/28408434-1_b_4.jpg"></a></span><p class="name"><a href="//product.dangdang.com/1107801548.html" title="Python数据分析基础教程:" target="_blank">Python数据分析基础教程:</a></p><p class="search_book_author">[法] Davy Cielen / [美] Arsh Iqbal / [荷] Thijs Raymakers</p><p class="search_book_span">2019-05-01 / 人民邮电出版社</p><p class="price"><span class="search_now_price">¥ 89.30</span></p><p class="search_shangjia"> <a class="tuijian" href="//product.dangdang.com/1107801548.html" target="_blank">95家在线比价></a></p><p class="search_booktag"><span class="hot_tag_red">新版</span></p></li>
我们可以发现每个图书的信息都包裹在一个<li>
标签中,而我们需要的信息都包含在<li>
标签的不同子标签中,例如书名包含在<a>
标签内,作者包含在一个class属性为search_book_author
的<p>
标签内,价格包含在<span>
标签内。由此可见,如果要在爬取页面信息,我们就需要从HTML代码中利用特定的选择器提取我们需要的信息。
步骤二:编写爬虫代码
爬取当当网
在了解了页面代码的结构后,就可以开始编写Python代码来爬取当当网的图书信息。
import requests
from lxml import etree
# 需要爬取的目标页面
url = 'http://book.dangdang.com/'
# 获取页面html
resp = requests.get(url)
# 对html页面进行解析
tree = etree.HTML(resp.text)
books = tree.xpath('//*[@id="book_con"]/div/ul/li')
for book in books:
# 获取书名信息
name_elem = book.xpath('./span[1]/a/@title')[0]
print(f'书名:{name_elem}')
# 获取作者信息
author_elem = book.xpath('./span[3]/a[1]/@title')[0]
print(f'作者:{author_elem}')
# 获取价格信息
price_elem = book.xpath('./p[4]/span[1]/text()')[0]
print(f'价格:{price_elem}\n')
上述代码的第一步是导入必要的模块和库,其中requests
库用于发送HTTP请求,etree
库用于解析HTML。
在程序的第二步,我们使用requests.get()
方法获取目标页面的HTML代码,然后使用etree.HTML()
方法对页面进行解析。
在第三步,我们使用xpath()
方法从解析后的页面中提取出需要的信息。例如获取书名信息的代码可以解释为:
name_elem = book.xpath('./span[1]/a/@title')[0]
其中./span[1]/a
用于选取<li>
标签中第一个<span>
标签中的第一个<a>
标签,@title
用于获取该<a>
标签的title
属性,[0]
则用于获取每个信息中的第一个元素。
以上代码即可成功的爬取当当网图书信息,如下所示:
书名:说话的力量
作者:[美] 卡门.西尔瓦 / [美]克莉丝汀·罗姆贝格
价格:¥24.00
书名:Java 8编程入门经典(第2版)
作者:侯伯利
价格:¥74.00
书名:Node.js开发指南
作者:何俊林
价格:¥79.90
书名:JavaScript高级程序设计(第4版)
作者:Nicholas C. Zakas
价格:¥89.10
...
爬取京东图书
与爬取当当网的图书类似,我们同样可以使用Python爬虫技术来爬取京东网的图书信息。下面是爬取京东图书的代码实例:
import requests
from lxml import etree
# 需要爬取的目标页面
url = 'https://book.jd.com/'
# 发送HTTP请求获取页面html
resp = requests.get(url)
# 对html页面进行解析
tree = etree.HTML(resp.text)
# 从解析后的页面中提取出需要的信息
books = tree.xpath('//*[@id="book"]/div[2]/ul/li')
for book in books:
# 获取书名信息
name_elem = book.xpath('./div[3]/a/em/text()')[0]
print(f'书名:{name_elem}')
# 获取作者信息
author_elem = book.xpath('./div[4]/span[1]/span/a/text()')[0]
print(f'作者:{author_elem}')
# 获取价格信息
price_elem = book.xpath('./div[2]/strong/i/text()')[0]
print(f'价格:{price_elem}\n')
需要注意的是,由于京东网的图书目录页面并不包含完整的图书信息,我们需要通过访问每个图书的详情页来获取其完整信息。而这部分内容超出了本文档的范畴,因此上述代码仅仅是爬取到了京东网图书目录页面的部分信息。
爬取亚马逊图书
与爬取当当网和京东网的图书类似,我们可以使用Python爬虫技术来爬取亚马逊网的图书信息。下面是爬取亚马逊图书的代码实例:
import requests
from lxml import etree
# 需要爬取的目标页面
url = 'https://www.amazon.cn/gp/bestsellers/books/'
# 发送HTTP请求获取页面html
resp = requests.get(url)
# 对html页面进行解析
tree = etree.HTML(resp.text)
books = tree.xpath('//*[@id="zg-ordered-list"]/li')
for book in books:
# 获取书名信息
name_elem = book.xpath('./div[1]/span[3]/a/text()')[0]
print(f'书名:{name_elem}')
# 获取作者信息
author_elem = book.xpath('./div[1]/span[4]/a/text()')[0]
print(f'作者:{author_elem}')
# 获取价格信息
price_elem = book.xpath('./div[1]/span[1]/span[2]/text()')[0]
print(f'价格:{price_elem}\n')
需要注意的是,由于亚马逊网的图书页面包含较多的动态元素,而爬虫技术往往难以处理动态元素,因此我们一般会使用Python的Selenium库来模拟浏览器的行为来获取完整的图书信息。而这部分内容同样超出了本文档的范畴,因此上述代码仅仅是爬取到了亚马逊网图书页面的部分信息。
步骤三:执行爬虫代码,获取图书信息
在编写好爬虫代码后,我们就可以使用Python解释器来执行代码了。对于上述三个示例代码,我们只需要将代码复制到一个Python文件中,保存后在命令行中执行即可。执行结果即为爬取到的图书信息。
示例说明
考虑到篇幅限制,本回答从原理思路出发,给出了Python爬取当当、京东、亚马逊的详细步骤,但并没有给出准确的实战操作说明。本回答中的示例代码无法独立运行,仅做为理论和原理方面的参考。如果需要实战操作指导,建议查阅相关Python爬虫的教程和书籍进行学习。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬取当当、京东、亚马逊图书信息代码实例 - Python技术站