Python爬取当当、京东、亚马逊图书信息代码实例

yizhihongxing

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&nbsp;/&nbsp;[美] Arsh Iqbal&nbsp;/&nbsp;[荷] Thijs Raymakers</p><p class="search_book_span">2019-05-01&nbsp;/&nbsp;人民邮电出版社</p><p class="price"><span class="search_now_price">¥&nbsp;89.30</span></p><p class="search_shangjia">&nbsp;<a class="tuijian" href="//product.dangdang.com/1107801548.html" target="_blank">95家在线比价&gt;</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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 详解Python3除法之真除法、截断除法和下取整对比

    详解Python3除法之真除法、截断除法和下取整对比 Python3中的除法 Python3中的除法有三种类型:真除法、截断除法和下取整。 真除法 真除法是Python3中默认的除法方式,它使用的是单斜线(/)符号。当我们进行两个数字的除法时(比如 3 / 2),真除法会给出精确的结果(1.5),不会直接进行截断。 示例: >>> 3 / …

    python 2023年6月3日
    00
  • Python利用正则表达式从字符串提取数字

    在Python中,可以使用正则表达式从字符串中提取数字。本文将为您详细讲解Python利用正则表达式从字符串提取数字的完整攻略,包括正达式的语法、re块的常用方法和两个示例说明。 正则表达式的语法 在正则表达式中,使用\d匹配数字,使用+表示匹配前一个字符1次或多次,使用*表示匹配前一个字符0次或次,使用?表示匹配前一个字符0次或1次。下面是一些常用的正则表…

    python 2023年5月14日
    00
  • 快速解决docker-py api版本不兼容的问题

    请注意以下内容: 快速解决docker-pyapi版本不兼容问题的攻略 问题描述 在使用 Docker Python API 包( docker-py )时,出现了版本不兼容的问题。可能的问题提示包括: TypeError: ‘module’ object is not callable ; ImportError: cannot import name ‘…

    python 2023年5月13日
    00
  • python3 assert 断言的使用详解 (区别于python2)

    以下是关于“python3 assert断言的使用详解(区别于python2)”的完整攻略: 问题描述 在 Python 3 中,assert 断言的使用方式与 Python 2所不同。在 3 中,assert 断言的语法更加简洁,同时也持更多的用法。下面是一个例: assert x >0, "x must be positive"…

    python 2023年5月13日
    00
  • python 阿里云oss实现直传签名与回调验证的示例方法

    下面就是对于“python 阿里云oss实现直传签名与回调验证的示例方法”的详细讲解。 什么是阿里云OSS 阿里云对象存储OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务,能够让用户随时随地存储和调用任意类型的数据,如图片、音频、视频、文档等。在开发中,我们通常会将一些大型文件(如图片、视频等)存储到阿里云O…

    python 2023年6月3日
    00
  • Python生成短uuid的方法实例详解

    Python生成短UUID的方法实例详解 在Python中生成UUID是一个很常见的需求,它作为一个唯一标识符,可以用于各种场景,如标识数据库表的主键、分布式系统唯一ID等。但是,UUID生成的字符串过长,不方便使用。因此,有时需要将UUID转换为短字符串来使用。本文将介绍Python生成短UUID的几种方法。 方法一:使用shortuuid库 shortu…

    python 2023年6月3日
    00
  • 关于python中第三方库交叉编译的问题

    关于Python中第三方库交叉编译的问题,我们需要考虑到两方面问题:第一是如何在本地编译出适用于指定平台的.so/.dll二进制文件,第二是如何在指定平台上使用这些编译好的二进制文件。以下是两种常见的解决方案及其示例说明。 解决方案一:使用交叉编译工具链 交叉编译指的是在运行平台不同于本地编译平台的情况下,将程序编译为目标平台可执行代码的过程。在Python…

    python 2023年5月13日
    00
  • python操作pptx设置title字体大小插入全屏图片A4尺寸实例一枚

    pip install python-pptx 安装好pptx,设置标题最大的作用是ppt里面的摘要视图显示摘要文字 参考:https://python-pptx.readthedocs.io/en/latest/   from pptx import Presentation from pptx.util import Cm pwidth,pheight=…

    python 2023年4月22日
    00
合作推广
合作推广
分享本页
返回顶部