爬虫篇 | Python使用正则来爬取豆瓣图书数据

Python绿色通道 2019/10/13 10:37


最近整理一个爬虫系列方面的文章,不管大家的基础如何,我从头开始整一个爬虫系列方面的文章,让大家循序渐进的学习爬虫,小白也没有学习障碍.

爬虫篇 | 不会这几个库,都不敢说我会Python爬虫

爬虫篇 | Python现学现用xpath爬取豆瓣音乐

爬虫篇 | Python最重要与重用的库Request

爬虫篇 | Python爬虫学前普及

基础篇 | Python基础部分


这两天有读者要我出一篇使用正则表达式来抓取数据,于是这篇献上

首先需要说明的是,在数据抓取的时候,优先使用xpath,如果xpath不行再考虑正则或者bs4, 因为xpath简单且高效!

概念性的东西这里就不说了,我们直接来实战,这里只简单说明一下,详细的需要自己去查一下资料!

要爬取的图书内容:

新知图谱, 爬虫篇 | Python使用正则来爬取豆瓣图书数据

爬取到的数据

新知图谱, 爬虫篇 | Python使用正则来爬取豆瓣图书数据


. 可以匹配除换行符外的字符
re* 表示匹配0个或多个表达式
re?匹配0个或多个由前面正则表达式定义的片段,非贪婪模式,且只匹配前一个

  1. 首先我们需要完全抓取,所以我们要使用 re.findall 方法,又因为数据全部在

  2. 中,需要只需要对这个里面数据处理

  3. 然后每一列来匹配

  4. 因为还需要向后匹配查找,所以需要添加 .*? 匹配一次,非贪婪模式. 等等匹配到 cover 下面的目录,我们可以匹配到 href ,获取再匹配标题,但 alt 包含标题,所以这里直接来提取 alt="新知图谱, 爬虫篇 | Python使用正则来爬取豆瓣图书数据" ,

  5. 接着需要提取数据出来这里使用 (.*?) 把数据提出来,这里有多个数据需要提取,然后用数组呈现出来 新知图谱, 爬虫篇 | Python使用正则来爬取豆瓣图书数据

完整代码

import requests
import re
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

url = 'https://book.douban.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/55.0.2883.87 Safari/537.36'
}
html = requests.get(url, headers=headers)
html.encoding = 'utf-8'
# 这里我只取了链接与标题
patter = re.compile('
  • (.*?)

    ', re.S)
    titles = re.findall(patter, html.text)
    for each in titles:
       print '书籍链接:{},书籍标题:{},---书籍作者:{}'.format(each[0], each[1],each[2].strip())

  • 如果你觉得文章还不错,请大家点赞分享下。 你的肯定是我最大的鼓励和支持。

    【完】
    如果觉得有料,来个在看,让朋友知道你越来越优秀了


    说句题外话,有不少人想加我微信,看我朋友圈的每日分享,我姑且放出来,但名额有限,先来先得。 我的朋友圈不止有技术分享,更有我的日常感悟,还有我个人商业思维观点 速速扫码添加!



    新知图谱, 爬虫篇 | Python使用正则来爬取豆瓣图书数据
    扫码添加,备注:公号铁粉

    推荐阅读

    爬虫篇 | 不会这几个库,都不敢说我会Python爬虫

    爬虫篇 | Python现学现用xpath爬取豆瓣音乐

    爬虫篇 | Python最重要与重用的库Request

    爬虫篇 | Python爬虫学前普及

    基础篇 | Python基础部分

    讲真,做Python一定不要只会一个方向!

    新知图谱, 爬虫篇 | Python使用正则来爬取豆瓣图书数据


    新知图谱, 爬虫篇 | Python使用正则来爬取豆瓣图书数据
    喜欢就在看吧
    Python绿色通道
    + 关注