Python应用-爬取京东书籍信息
说到Python的应用,听到比较多的市爬虫,爬虫也是Python入门最好的练手项目。本文主要讲解xpath的用法,并使用xpath来分析和抓取爬取京东书籍的相关信息。关于书籍有一个基本的概念:国际标准书号(简称ISBN),每一本书出版都带有一个唯一的ISBN,本文也是通过ISBN来找到对应数据的信息
环境介绍
PC环境:Windows
Python版本:Python3.6
IDE环境:PyCharm
使用第三方库:lxml、requests
源码下载:http://03.xiaolinjun.top/0c5-0.zip
使用PyCharm建立Python工程
在桌面新建文件夹:python_spiderJD,双击打开PyCharm,点击Create New Project新建Python工程,选择工程目录文件夹为刚新建的python_spiderJD,使用新的虚拟环境,选择Python解释器为Python3.6,如下图
工程建立完成后,在工程目录下新建文件:spiderJD.py
使用PyCharm安装相关第三方库
在PyCharm中安装lxml和requests库。点击菜单栏File–>Settings选择Project:python_spiderJD下的Project Interpreter,然后点击右边的小加号,在弹出的窗口中搜索需要安装的库,然后点击安装
安装好lxml和requests库后,可以看到该环境下多出了一下库(注:如提示安装失败,可能是由于pip的版本问题导致,可以将pip的版本降级为pip9以下版本或修改相关脚本文件)
代码实现爬取京东指定ISBN号书籍信息
代码如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43import requests
from lxml import html
# 在京东商城通过ISBN来查找对应书籍信息
def spider(isbn):
# 获取URL
url = 'https://search.jd.com/Search?keyword={0}'.format(isbn)
# 获取HTML文档,并将编码改为'utf-8'
resp = requests.get(url)
print(resp.encoding)
resp.encoding = 'utf-8'
html_doc = resp.text
# 获取xpath对象
selector = html.fromstring(html_doc)
# 找到列表的集合
ul_list = selector.xpath('//div[@id = "J_goodsList"]/ul/li')
print(len(ul_list))
# 解析对应的内容、标题、价格、连接并打印
for li in ul_list:
# 标题
title = li.xpath('div/div[@class = "p-name"]/a/@title')
print(title[0])
# 购买连接
link = li.xpath('div/div[@class = "p-name"]/a/@href')
print(link[0])
# 价格
price = li.xpath('div/div[@class="p-price"]/strong/i/text()')
print(price[0])
# 店铺
store = li.xpath('div//a[@class="curr-shop"]/@title')
print(store)
if __name__ == '__main__':
isbn = input('请输入ISBN')
spider(isbn)
代码分析
- 首先导入requests库和lxml的html方法
- 定义函数实现获取京东网指定ISBN书籍信息
- 根据获取URL页面内容
- 把页面内容的编码方式改为utf-8
- 将页面内容转换为xpath对象
- 使用xpath解析页面内容,找出有用信息并打印
实现效果
运行代码,输入ISBN号(以书籍 Python编程快速上手 让繁琐工作自动化 ISBN:9787115422699 为例),点击回车,如下
HTML页面分析技巧
打开京东,搜索框中输入ISBN:9787115422699,点击搜索,然后按F12查看网页源码,点击左上角的小箭头工具,然后选择书籍的区域,这时会自动定位到源码中的位置