Python|爬取书籍信息
Posted 7758520lzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python|爬取书籍信息相关的知识,希望对你有一定的参考价值。
1.前言
爬虫可以有助于快速地从网页中获取想要的信息,从而大大减少工作量今天小编就用实际案例为大家讲解如何爬取网站的一些书籍信息。
2.环境配置
Pycharm,python3,爬虫库request,re模块。
3.爬取目标
爬虫的一般思路:分析目标网页,确定urlà发送请求,获取响应à解析数据à保存数据。
http://www.wsgph.com/so.asp?key=%C9%EE%B6%C8%D1%A7%CF%B0&imgbtn.x=38&imgbtn.y=18
第一步:分析目标网页,整理思路。
分析目标:要爬取的目标是所有的书籍信息,但书籍信息不只是存在当前网页,需要找到所有有书籍信息的网页,并依次去爬取。
找到头部信息:通过浏览器的检查获取到需要的头部信息。
整理思路:先在当前网页找到所有的存放书籍信息的网页,依次爬取网页,再从中获得每本书的具体网页,最后爬取到需要的信息。
具体步骤如下:
?
?
?
?
?
?
第二步,发送请求,获取响应的数据。
获取数据:直接通过request获取,就不再多加阐述,只需要多多注重头部信息。
?
第三步:解析数据。
转换数据:当获取到网页的text的数据时,会发现乱码,这时需要将它的格式转换为‘gbk’。
截取数据:通过re模块,来截取数据,re模块是python自带的模块,具体的用法,可以上python官网查看。
?
第四步:保存数据。
可以通过docx模块,创建一个文档并保存。
如下图:
?
完整代码如下:
import requests import re url=
‘http://www.wsgph.com/so.asp?key=%C9%EE%B6%C8%D1%A7%CF%B0&imgbtn.x=38&imgbtn.y=18‘ header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36" } response = requests.get(url,headers=header) response.encoding = "utf-8" response.encoding = "gbk" # print(response.text) books_infos_next = re.findall(r‘<a HREF=(.*?) title=‘,response.text) for n in books_infos_next: text = requests.get(n,headers=header) response.encoding = "utf-8" text.encoding = "gbk" # print(text.text) books_infos = re.findall(r‘<a href="(.*)" target="_blank"><img src=‘,text.text) books_infos.pop(0) # print(books_infos) for i in books_infos: url1 = "http://www.wsgph.com/%s"% i booksrespones = requests.get(url1,headers = header) booksrespones.encoding = ‘utf-8‘ booksrespones.encoding = ‘gbk‘ # print(booksrespones.text) title = re.findall(r‘<div class="h1_title book_head"><p id="h1">(.*?)</p>‘,booksrespones.text) price = re.findall(r‘<p>定 价:(.*?) 元</p>‘,booksrespones.text) author = re.findall(r‘<li><span>作者:(.*?)</span></li>‘,booksrespones.text) isbn = re.findall(r‘<li><span>ISBN:(.*?)</span></li>‘,booksrespones.text) publication_date = re.findall(r‘</li><li><span>出版时间:(.*?)</span></li>‘,booksrespones.text) press = re.findall(r‘<li><span>出 版 社:(.*?)</span></li>‘,booksrespones.text) pagination = re.findall(r‘<li><span>页码:(.*?)</span></li>‘,booksrespones.text) formats = re.findall(r‘<li><span>开本:(.*?)</span></li>‘,booksrespones.text) get_books = title+author+price+press+publication_date+pagination+formats+isbn # print(get_books) for i in get_books: print(i,end=‘ / ‘) print(‘
‘)
|
4.总结
这是一个静态网页的爬取,但相较于一般的静态网页,他的信息不只是单纯的存放于一个网页,需要从这一个网页中去找到其它网页的url并再一次去访问,才能查出所有的结果。最后提醒大家爬虫程序规避网站经营者设置的反爬虫措施或者破解服务器防抓取措施,非法获取相关信息,情节严重的,有可能构成“非法获取计算机信息系统数据罪”。
以上是关于Python|爬取书籍信息的主要内容,如果未能解决你的问题,请参考以下文章
python爬取豆瓣新书清单
Python爬取当当网书籍数据,并数据可视化展示
豆瓣书籍数据爬取与分析
听说你想学Python?不知道看什么书?我爬取了评分最实用的书籍!
Python爬虫之Scrapy框架系列(12)——实战ZH小说的爬取来深入学习CrawlSpider
Python爬虫之Scrapy框架系列(12)——实战ZH小说的爬取来深入学习CrawlSpider