爬取微信文章,用70行代码爬取了搜狗上666篇文章

因为再看崔庆才的教程,刚好看到爬取微信文章,所以就想着自己试试。打开搜狗发现,搜狗的微信文章页面网页布局有了变化(准确来说是简单了一点)、
所以分析了一下,用了70行代码实现了爬取上面【’搞笑’, ‘养生堂’, ‘私房话’, ‘八卦精’, ‘科技咖’, ‘财经迷’】几个标题的一共660多篇的文章

知识储备:requests库,selenium自动化模块,MongoDB数据库模块,BeautifulSoup解析库等

因为每个标题的页面都是分了四步加载的,所以我自然就想到了selenium自动化的模块来实现自动加载分布的页面。
在使用selenium时,一定要注意在每个操作的时候,sleep几秒,防止太快了激活了网站的反爬虫。

步骤:
一、使用selenium工具时,解析页面一定要放在后面,先实现页面的跳转等你需要实现的操作,等测试完发现可以用以后在
二、进行各个页面的解析

就比如我,当时在做这个的时候,解析页面和实现自动化一起进行时,感觉很混乱,所以我就花费了好长时间也没有结果。
后来,我停下来想了一下,决定一步步的来,先完全实现自动化,然后进行页面的解析。分几个函数来实现,通过函数的调用。

接下来看看代码:

from bs4 import BeautifulSoup as  bf
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pymongo,requests

pymo = pymongo.MongoClient()
da = pymo.pythonSpider
db = da.weixinur10

这个是需要导入的模块和一些准备工作

接下来实现一个自动化跳转的函数,包括自动下滑页面和自动跳转到别的标题

title_list = ['搞笑', '养生堂', '私房话', '八卦精', '科技咖', '财经迷','invalid']
# 这里我感觉有点业余,不过也凑合着,这几个标题可以在dom树中提取。
for i in title_list:
    js = 'window.scrollTo(0,document.body.scrollHeight)'
    for x in range(4):
        driver.execute_script(js)  # 执行js脚本,将页面滑动到底部
        sleep(3)
        next_page_botton = Wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,'#look-more')))  # 找到底部加载下一页按钮
        next_page_botton.click()
        sleep(3)
    parser_one_page(driver.page_source)
    # 这个是解析一个标题页面的函数,在后面实现
    if i == 'invalid':
        pass
    next_page = driver.find_element_by_link_text(i)
    next_page.click()
    sleep(5)
# 上面有几个sleep方法,很重要,千万不能省略,不然就无法加载剩余的页面,我当时就是在这里被卡住了

接下来是解析一个标题的函数,爬取这个标题下多有的文章链接

def parser_one_page(html):
# 参数html明显是返回的每个页面的页面资源
    Soup = bf(html,'lxml')
    div = Soup.find('div',class_="news-box").find_all('ul')
    for i in div:
        try:
            h3 = i.find_all('h3')
            for x in h3:
                try:
                    a = x.find('a')
                    url = a.get('href')
                    parser_one_art(url)
                    # 解析一个文章的函数,用于提取内容
                except Exception:
                    pass
        except Exception:
            pass
# 上面有几个try语句,我也觉得至关重要,记忆加强程序的健壮性

在最后,我们有定义一个解析一篇文章的函数

def parser_one_art(url):
    html = requests.get(url)
    Soup = bf(html.text, 'lxml')
    content = Soup.find('div', id='img-content')

    title = content.find('h2').get_text()

    p_list = []
    ps = content.find_all('p')
    for i in ps:
        x = i.get_text()
        p_list.append(x)

    main_content = '\n'.join(p_list)
    # 这个是将各个文章的段落拼接成一片完整的内容
    db.insert_one({title: main_content})
    # 将数据插入到数据库

好了,这就是全部内容,一共爬取了669篇文章

来,我们先欣赏一片文章,格式就是这样,爬下来以后

                #女子给乞讨老人买面条,面店连“碗”都不给? 真相到底是什么                                    

微信号
yzwb20102806

功能介绍
新鲜事、有趣事、不平事、离奇事、为难事,欢迎第一时间微信我们哦!

22日,一条《要饭的也是人,别瞧不起任何人,那样你连人都不如》的帖子,在镇江朋友圈和网络的论坛上刷屏。同时,帖子引发了网络的暴力声讨,甚至有人专题发帖,呼吁网友从此远离涉事的镇江这家知名面店——大华面馆。一时间,这一事件沸沸扬扬,满城热议。

▲事发面馆

一则帖子
“给乞讨老人买面,面店连碗都不给”

这则帖子内容全文如下:“人没有贵贱之分,凭什么买了面条不给人家用碗吃饭,拿个方便袋过来、叫他倒进去吃。我想问老板,你自己吃饭是在方便袋里面吃的吧,最后我花钱再买一个一次性碗,(面条是我买给这个老头的,结果刚端给他,就听见老板使唤员工去把碗拿过来不给吃,你要是觉得可能他不太卫生,你可以拿个一次性碗来,拿方便袋算什么)。现在生意做大了,多想想自己以前没生意的时候,一碗面条哼哧哼哧送游戏室的时候。做人心要好,不管你是多大的老板,多大的官。”

帖子中,还附上了一张一名老者坐在台阶上吃面的照片。在老人身旁,还放有一个小盆,内有数枚硬币。 帖子中涉及的面店,是镇江民间极其有名的大华面馆。帖子一出成了最火爆的“话题”。瞬间,大华面馆就被波涛汹涌的热议、质疑和争议,推至风尖浪口。

▲乞讨老人(图片来自网络)
记者调查
常年来面店乞讨,众食客不堪其扰

23日上午11时左右,记者来到大华面馆。面馆老板董亮的母亲张晓青获悉记者身份后,先控诉起那名涉事的乞讨老者,“他每天都到面馆来,盯着吃面条的人要钱,不给钱不走,还会在他们身上、背上敲敲。通常面店上班,他就上班;面店下班他才下班!”在场吃面的张萍则说,这个老年乞讨者,常年在面馆乞讨,自己在这儿吃个面条,他能过来三趟要钱!真是不堪其扰。

常年在面店擦皮鞋的申富军说,自己和这个老年乞讨者很熟,他喜欢找那些新面孔和年轻女子要钱,不给钱他就不走,一直盯着人家。在这里乞讨收入很可观,他有次中午11点多钟看到老乞丐,问他“今天有没有要到200元?”老乞丐摇摇手说:“只要到了100多元”。申富军还说,自己也看到董老板有时会将客人们吃剩下来的、别人没吃过的油条等,给老乞丐吃。

而就在记者采访时,有人告诉记者,刚刚还看到老乞丐在现场要钱,但在看到记者采访后,他从旁边的巷子里走了。

记者随即找出去,却看不到老年乞讨者的身影。

亲历者说
店老板称无奈“躺枪”

很快,董亮来到现场。他说帖子中发的情况确有此事,但是真实情况绝不是如帖子中所说。随后,他给记者找来了当天事情的亲历者董铭和陈素英。

董铭是董亮的弟弟,他告诉记者,因为每天太忙,记得事情大概发生在上个周六九十点钟时候,当时给老乞丐买面条的年轻女子,将这碗面条端给老乞丐吃时,因为用店内的碗,被正好路过的他喊住了。因为老乞丐随身有饭盆但很脏,董铭就让服务员拿一只食品袋套在饭盆上。女员工陈素英,就从口袋中掏出一只食品袋。但不想年轻女子觉得这样对老乞丐不公平,就要求拿一次性餐盒。陈素英就拿了一次性餐盒给她,同时因为打工的不能当家,陈素英就称要一元钱。这样,年轻女子就给了陈素英1元钱。

至于年轻女子帖子中说陈素英拿出的食品袋很脏,董亮强调,“这些食品袋,不仅打包食客们吃剩下的油条等,还经常打包面条外卖。”“事情经过就是这样!”董亮很是无奈地说。

专家观点
付出善意不假思索 谴责他人三思后行

对此,江大马克思主义学院教授周海燕认为,面店的做法确有欠妥的地方,刚开始的舆论“一边倒”,从某种程度而言,反映了大部分人心中都存有“人人平等”“同情弱者”的善念。“不管乞丐本身是不是苦难无助;还是以乞讨为职业好逸恶劳,人们的善意不能在分辨真假以后再付出。普通人往往会以善意去理解人,用善意去对待人,这恰恰是我们社会和谐的一种表现。”周教授说。

但周教授强调,社会的善良也需要得到理性的支持,付出善意可以不假思索。但大家不应该在事情还未经核实清楚的情况下,就集体谴责或是“讨伐”当事的某一方。从动机而言,面店也不是歧视对方,他还要考虑到食客的感受。“所以,当我们在表达愤怒的时候,如果能够多点三思而行,多了解真相后再发出声音。”

来源 | 扬子晚报记者 万凌云

1.3盆小龙虾坑惨女司机!罚2000扣12分,真相让人大跌眼镜

2.怕妻子太辛苦,男子两次锯马路护栏 网友:宠妻还有这种操作?

3.屋外传来剧烈震动和巨响,9岁男孩极度恐惧下…法院这样判

赞赏

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

猜你喜欢

转载自blog.csdn.net/killeri/article/details/80069458