Python第二试

作者: hasu | 来源:发表于2017-05-24 15:27 被阅读58次

爬取简书首页信息,包括:标题,作者,发表时间,阅读量,评论数,点赞数,打赏数,所投专题

因为自己看过一篇别人写的爬取赶集网的信息,再加上也没事做,就想着模仿着试一试,反正做的过程中是很痛苦的,好多基础的都不会,就只能边查资料边学习了,硬着头皮弄了一天,终于有了结果。
先上结果图,存储在mongodb中。


爬取的数据

好了,记录一下做的过程吧。

1.查看要爬取页面的源码

经过查看元素,发现在 ul 标签下的不同的 li 对应不同的文章,而每个文章获取标题、作者等等的方法都一样,那只需获取这个文章列表,然后让他们执行相同的操作即可获得所需数据

2.查找自己所需数据所在的标签范围

作者名和文章发布时间 标题 阅读量、评论数、点赞数和打赏数

3.具体的爬取数据过程

#encoding=utf-8
import requests,pymongo
from bs4 import BeautifulSoup

def get_info(url):

    r=requests.get(url) # 向服务器请求页面
    r.encoding='utf-8' # 标明编码为utf-8,以免出现解码错误
    soup=BeautifulSoup(r.text,'html.parser')  # 以html.parser方式对页面进行解析
    articlelist=soup.select('ul.note-list li')  #获取首页文章列表
    #print articlelist
    for article in articlelist:
        title=article.select('a.title')[0].text
        author=article.select('a.blue-link')[0].text
        date=article.select('span.time')[0].get('data-shared-at')
        if article.find_all('a',attrs={'class':'collection-tag'}):  #因为有些文章没有所属分类,所以先判断,以免获取为None
            collection=article.select('div.meta a.collection-tag')[0].text
            readnum=article.select('div.meta a:nth-of-type(2)')[0].text  #:nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素.
            if article.find_all('i',attrs={'class':'iconfont ic-list-comments'}):
                commentnum=article.select('div.meta a:nth-of-type(3)')[0].text
            else:
                commentnum=0
        else:               #如果没有所属分类,那么阅读量就是第一个a标签里的内容
            collection='所属分类无'
            readnum=article.select('div.meta a:nth-of-type(1)')[0].text
            if article.find_all('i',attrs={'class':'iconfont ic-list-comments'}):
                commentnum=article.select('div.meta a:nth-of-type(2)')[0].text
            else:
                commentnum=0
        likenum=article.select('div.meta span:nth-of-type(1)')[0].text
        if article.find_all('i',attrs={'class':'iconfont ic-list-money'}):
            money=article.select('div.meta span:nth-of-type(2)')[0].text
        else:
            money=0
        data = {
            'title' : title,
            'author' :author,
            'date': date,
            'readnum' : readnum,
            'commentnum' :commentnum,
            'likenum' : likenum,
            'money' : money,
            'collection' : collection
        }
        jianshu.insert_one(data)    #将获取的数据存入到数据库中
client = pymongo.MongoClient('localhost',27017)  # 连接mongodb
test = client['test']  # 创建一个名叫test的数据库文件
jianshu = test['jianshu'] # 创建一个jianshu的表
get_info('http://www.jianshu.com/')

相关文章

  • Python第二试

    爬取简书首页信息,包括:标题,作者,发表时间,阅读量,评论数,点赞数,打赏数,所投专题 因为自己看过一篇别人写的爬...

  • Python试学

    前几天报了一个Python试学课,学了四个知识点:print函数,数据类型及转换,条件嵌套语句,input函数。 ...

  • 有序字典

    python中的字典 python中默认的字典是无序的,试下下面的代码 collections.OrderedDi...

  • 水彩插画|tow妖

    第二张,试一试。

  • 2018-03-10

    Python第二周学习总结 导读:这是python学习的第二周,在第二周,学习了大量的python基础,其中有字符...

  • 【爬虫】通关黑板客爬虫闯关游戏

    最近看到的一个关于Python爬虫的闯关游戏,手痒,试他一试。 第一关 地址:http://www.heibank...

  • python自动回复群消息

    刚自学python不久,自己试了试使用python回复群消息。 1、安装库 首先这个项目可以使用Wxpy库实现,我...

  • log文件查找及粘贴

    1、log文件查找及粘贴 利用python查找每个被试的log文件并粘贴到对应被试的\m00 文件夹中

  • 2019-10-08

    深度学习第二天 python基础: python...

  • 2018-11-28

    python书籍 入门: python基础教程第二版 , 笨方法学python 进阶: 流畅的python ,e...

网友评论

    本文标题:Python第二试

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