微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用python爬取当当网所有数据分析书籍信息

小编给大家分享一下如何使用python爬取当当网所有数据分析书籍信息,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!


1、爬取目标

对于要爬取的当当网书籍信息,首先打开当当网页,以数据分析为关键字搜索出来页面所有书籍信息。如下图:

如何使用python爬取当当网所有数据分析书籍信息


本次爬取的结果有11项:
(1)每页序号
(2)商品ID
(3)标题
(4)书籍价格
(5)书籍原价
(6)书籍折扣
(7)电子书价格
(8)作者
(9)出版时间
(10)出版社
(11)书籍评论

2、爬取过程

(1)确定URL地址

分析网页页面,当输入数据关系关键字以后,点击搜索出来所有书籍网页信息后,将网页拉到最下面可以看到如下图:

如何使用python爬取当当网所有数据分析书籍信息


可见此网页是翻页的,因此,点击页面2、3、1,提取网页的url如下:

http://search.dangdang.com/?key=%CA%FD%BE%DD%B7%D6%CE%F6&act=input&page_index=2

http://search.dangdang.com/?key=%CA%FD%BE%DD%B7%D6%CE%F6&act=input&page_index=3

http://search.dangdang.com/?key=%CA%FD%BE%DD%B7%D6%CE%F6&act=input&page_index=1

从每页的URL地址信息可以发现每一个页面的地址差异就是page_index的值,所以URL地址可以确认为:

http://search.dangdang.com/?key=%CA%FD%BE%DD%B7%D6%CE%F6&act=input&page_index=

page_index的值,我们可以通过循环依次在地址后面添加

代码如下:
urls = ['http://search.dangdang.com/?key=%CA%FD%BE%DD%B7%D6%CE%F6&act=input&page_index={}'.format(i) for i in range(1,101)]

(2)确定爬取节点

有了URL地址,就可以使用lxml库来获取网页信息进行解析,得到具体的爬取信息。鼠标右键,点击“检查”,如下图:

如何使用python爬取当当网所有数据分析书籍信息


通过网页html里面的信息对应查找,可以找到li对应每个书籍信息,详细的信息如下图可见:

如何使用python爬取当当网所有数据分析书籍信息


可以看到书籍名字、价格等信息,然后通过Xpath可以逐一提取出来。详细代码如下:

html=requests.get(url,headers=headers)# html.encoding = "utf-8"# print('第一层调用是否返回正常:',html)html.encoding = html.apparent_encoding  # 将乱码进行编码selector=etree.HTML(html.text)# print(selector)datas=selector.xpath('//div[@class="con shoplist"]')# print(datas)
for data in datas:   Classs = data.xpath('div/ul/li/@class')                        #line1-line60   IDDs = data.xpath('div/ul/li/@id')                              #id   titles = data.xpath('div/ul/li/a/@title')                      #标题   prices = data.xpath('div/ul/li/p[3]/span[1]/text()')           #书籍价格   source_prices = data.xpath('div/ul/li/p[3]/span[2]/text()')    #书籍原价   discounts = data.xpath('div/ul/li/p[3]/span[3]/text()')        #书籍折扣   # dian_prices = data.xpath('div/ul/li/p[3]/a[2]/i/text()')       #电子书价格   authors = data.xpath('div/ul/li/p[5]/span[1]/a[1]/@title')     #作者   publish_times = data.xpath('div/ul/li/p[5]/span[2]/text()')    #出版时间   publishs = data.xpath('div/ul/li/p[5]/span[3]/a/text()')       #出版社   comments = data.xpath('div/ul/li/p[4]/a/text()')               #书籍评论   urls=data.xpath('div/ul/li/a/@href')

备注:基于如果想爬取电子书价格,由于有些书籍没有电子书价格,因此爬取出来会错行,务必通过提取书籍页面url,递归再次爬取详情页进行空值处理,避免错行。

(3)保存爬取信息入数据库

此处我们将爬取的信息存储入数据库,就需要先连接数据库和建立数据库表,便于后续存储。数据连接和表建立代码如下:

db = pymysql.connect(host='localhost', user='root', passwd='库密码', db='库名称:Learn_data', port=3306, charset='utf8')print("数据库连接")cursor = db.cursor()cursor.execute("DROP TABLE IF EXISTS Learn_data.dangdangweb_info_detail")sql = """CREATE TABLE IF not EXISTS Learn_data.dangdangweb_info_detail (   id int auto_increment primary key,   Class CHAR(100),   IDD CHAR(100),   title CHAR(100),   price CHAR(100),   source_price CHAR(100),   discount CHAR(100),   author CHAR(100),   publish_time CHAR(100),   publish CHAR(100),   comment CHAR(100),   dian_price CHAR(100))DEFAULT CHARSET=utf8"""cursor.execute(sql)

爬取的数据存储入表中代码如下:
cursor.execute("insert into dangdangweb_info_detail (Class,IDD,title,price,source_price,discount,author,publish_time,publish,comment,dian_price)"              "values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",       (str(Class),str(IDD),str(title),str(price),str(source_price),str(discount),str(author)        ,str(publish_time),str(publish),str(comment),str(dian_price[0])))

最后必须使用:db.commit() 关闭数据库,不然数据无法正确存储入表。

3、爬取结果

最后,我们将上面的代码整合起来就可以正常爬取。存储的结果截图如下:

如何使用python爬取当当网所有数据分析书籍信息

以上是“如何使用python爬取当当网所有数据分析书籍信息”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程之家行业资讯频道!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐