Python之简单抓取豆瓣读书信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python之简单抓取豆瓣读书信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1701字,纯文字阅读大概需要3分钟。
内容图文
![Python之简单抓取豆瓣读书信息](/upload/InfoBanner/zyjiaocheng/1123/e6ccbb614fdd41959e89f7a07bf8e6e7.jpg)
最近出差学习,闲来撸一把 Python。看语法书这些,真是看完就忘,还不如来写点小程序,有实践性又有趣。
我的环境是Ubuntu 17
,开始之前先装几个依赖包,用于解析 html 文件。
sudo apt install python-lxml,python-requests
小程序实现从豆瓣读书上抓取评分8以上,且评分人数不低于800人的书籍。这里取了一个种子,是刘震云老师的《一句顶一万句》。
from lxml import html
import requests
urlPrefix = ‘https://book.douban.com/subject/‘
candidateBookNums = []
candidateBookNums.append(‘3633461‘)
selectedBooks = {}
# 控制循环次数# i = 1while candidateBookNums:
bookNum = candidateBookNums.pop(0)
bookUrl = urlPrefix + str(bookNum)
# 获取网页
page = requests.get(bookUrl)
# 将网页格式化为树型
tree = html.fromstring(page.text)
# 书籍名称
bookName = tree.xpath(‘//title/text()‘)
# 平均分
rating_num = tree.xpath(‘//strong[@property="v:average"]/text()‘)[0]
# 评分人数
rating_people = tree.xpath(‘//a/span[@property="v:votes"]/text()‘)[0]
if rating_num < 8or rating_people < 800:
continue
stars = tree.xpath(‘//span[@]/text()‘)
# 5星评价比例
stars5 = stars[0]
# 4星评价比例
stars4 = stars[1]
# 3星评价比例
stars3 = stars[2]
# 2星评价比例
stars2 = stars[3]
# 1星评价比例
stars1 = stars[4]
# 豆瓣读书中指向其他书的链接
links = tree.xpath(‘//div[@]/dl/dd/a/@href‘)
# 去掉空白符,如回车、换行、空格、缩进
bookName = bookName[0].strip()
# 整理豆瓣上书籍的评分信息
book = {
‘name‘:bookName,
‘score‘:rating_num,
‘rating_people‘:rating_people,
‘stars5‘:stars5,
‘stars4‘:stars4,
‘stars3‘:stars3,
‘stars2‘:stars2,
‘stars1‘:stars1,
}
selectedBooks[bookNum] = book
print bookName,book
for j in links:
bookNum = j.split(‘/‘)[-2]
if bookNum notin selectedBooks.keys() and bookNum notin candidateBookNums:
candidateBookNums.append(bookNum)
# i += 1# if i > 100:# breakprint selectedBooks
OK,这样就完成了一个简单的从豆瓣抓取符合要求的书籍的程序。其实实现倒是次要的,主要是从豆瓣读书的页面代码中找到相应信息的位置,提取之。
原文:https://www.cnblogs.com/read-the-spring-and-autumn-annals-in-night/p/12041922.html
内容总结
以上是互联网集市为您收集整理的Python之简单抓取豆瓣读书信息全部内容,希望文章能够帮你解决Python之简单抓取豆瓣读书信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。