美文网首页python3爬虫案例详解系列
python3.6爬虫之豆瓣小王子2000条内容详解(二)

python3.6爬虫之豆瓣小王子2000条内容详解(二)

作者: 雷荣斌 | 来源:发表于2017-12-26 14:21 被阅读21次

    目标:抓取豆瓣小王子读者头像链接、名字与评语,并保存于本地excel。

    爬虫的流程:发送请求——获得页面——解析页面——抽取并储存内容。

    我们依然便采用:requests(获取)——xpath(解析)——pandas(储存)

    废话不多说,先上结果与代码:

    # -*- coding: utf-8 -*-

    import requests

    from lxmlimport etree

    import pandasas pd

    #1:把所有url放入urls这个列表里。2:用for循环实现翻页

    urls= ['https://book.douban.com/subject/1084336/comments/new?p={}'.format(i) for iin range(1,101,1)]

    comments= []   #创建一容器来放爬去的内容

    for urlin urls:

       r= requests.get(url).text#获取text

       s= etree.HTML(r)   #把html转换成lxml可解析的对象

       files= s.xpath('//*[@id="comments"]/ul/li')   #解析到li标签,然后用for循环遍历里面的内容

       for itin files:

           # 获取img,[0].strip:字符格式化,让输出更美观

           img= it.xpath('div[1]/a/img/@src') [0].strip()

           name= it.xpath('div[2]/h3/span[2]/a/text()')[0].strip()

           text= it.xpath('div[2]/p/text()') [0].strip()

           # 把img/name/text,分别赋与给imgs/names/texts,并依次装入comments

           comments.append({'imgs':img,'names':name,'texts':text})

    df= pd.DataFrame(comments)   #定义DataFrame对象并赋给df

    df.to_excel('D://xwz_fanye.xlsx')   #把结果输出为excel,存在D盘


    16行代码,2000条内容,是不是很简单呢?

    现重点讲解代码中间部分

    一:urls

    通过翻页,我们发现url中p随之同步变化,所以改变p的数值我们就可以实现翻页,如图:

    二:comments

    我们抓取了img、name、text需要有序的排列,即采用append函数,依次把他们放入comments。

    三:xpath

    因为我们要爬取三个内容,且他们都在 li 标签里,所以我们先定位到 li 标签,再用一个for循环分别抓取,如图:

    获取img链接采用@src,获取文本采用text()

    xpath的具体操作,请参考第一篇哦

    总结:

    1:实现翻页,一般都是找url的规律,然后运用for循环即可。

    2:你会在网上看见各种不同的代码,其实都是一个套路,把本文这个例子看会了,其他的都是大同小异哦。

    3:采用requests(获取)——xpath(解析)——pandas(储存)这个模板,一般的网页都可以胜任啦。

    下一篇文章,将继续扩大难度,学习获取JS动态内容,抓取豆瓣电影top200,大家可以提前了解HTML静态与JS动态的区别哦。

    有不清楚的地方,大家可以留言,点赞,我看到了,会第一时间回复你。

    本文同步更新于知乎微信公众号。欢迎来骚扰,哈哈。

    相关文章

      网友评论

        本文标题:python3.6爬虫之豆瓣小王子2000条内容详解(二)

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