requests库实战-爬取豆瓣top250的图书

作者: 5a41eb2ceec6 | 来源:发表于2019-02-09 10:12 被阅读1次

    日拱一卒|数据挖掘012

    推文对应的代码链接:https://github.com/piyixiaeco/daily-code/blob/master/requests-douban%20book%20Top250.ipynb

    参照“手把手教你爬豆瓣Top250的电影”,本篇推送将爬取豆瓣Top250图书,练习requests库的使用。

    整体思路:

    1. 得到豆瓣Top250图书的所有网页链接
    2. 从每个网页中获取源代码内容
    3. 提取网页中符合要求的数据
    4. 将三个函数整合成一个函数

    一、得到所有网址链接

    第一页网址:
    https://book.douban.com/top250?start=
    第二页网址:
    https://book.douban.com/top250?start=25
    第三页网址:
    https://book.douban.com/top250?start=50

    从中我们可以发现网址链接规律:

    只有start=后面的数字会发生变化,而且是有规律地变化,规律为25x(i-1),其中i为当前的页码

    将爬取相应网页链接的函数命名为allurl(),具体如下:

    1

    二、从每个网页中获取源代码内容

    首先通过requests.get()的方法得到关于本次请求的返回包,并放在r这个变量中。通过r的属性r.status_code或者r.reason,获取本次请求的状态


    2

    我们可以看到返回的状态码是200,OK,说明我们可以顺利地访问这个网页。


    3

    为了保证运行时的稳定性,加入try和except。如果try部分的代码运行正常,则在执行完毕后不会执行except内的内容,如果出现各种类型的ERROR,则会执行except下代码,而不会因为报错而终止程序的运行。

    三、 提取网页中符合要求的数据

    对于r.text源码有两种通常的处理方法,一种是使用html解析引擎解析,如BeautifulSoup,一种是使用正则表达式匹配文本。

    正则表达式的优势在于不需要知道这个源代码结构,只需要找到相关信息前后的唯一标签即可,方便了操作。

    通过Chrome浏览器检查选项


    4

    可知:图书的名称都保存在title="..."\n这个标签中

    5

    同理得到评分和评价人数


    6
    7

    然而这并不是最终想要的结果,还需要剔除掉尖括号和其中的内容,保留我们所需的信息。

    8 9 10

    将信息储存到字典中

    11

    通过pandas中的DataFrame构建一个表格型数据结构


    12

    将这些步骤封装成一个函数

    13

    四、 将三个函数整合成一个函数

    将三个函数整合成一个函数(main(filename))
    首先创建一个同类型的空的DataFrame名为all,以便在后续的循环添加内容

    14

    对每个网页都通过gethtmltext(url)的方法得到源代码,对每个源代码都通过getbookinfo(url)的方法获得frame。

    15

    最后将爬取下来的数据写入到Excel进行保存


    16 17

    将以上的整合有:


    18

    爬取豆瓣图书Top250任务大功告成~

    参考资料:
    手把手教你爬豆瓣Top250的电影
    手把手教你爬豆瓣Top250的电影(二)
    使用python抓取豆瓣top250电影数据进行分析

    相关文章

      网友评论

        本文标题:requests库实战-爬取豆瓣top250的图书

        本文链接:https://www.haomeiwen.com/subject/wszvsqtx.html