前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经济学人文章爬虫

经济学人文章爬虫

作者头像
林清猫耳
发布2018-12-14 11:26:04
1.1K0
发布2018-12-14 11:26:04
举报
文章被收录于专栏:我爱编程

因为偶然的机会知道了经济学人这个网站,下面是引自百度百科的相关介绍:

《经济学人》是一份由伦敦经济学人报纸有限公司出版的杂志,创办于1843年9月,创办人詹姆士·威尔逊。杂志的大多数文章写得机智,幽默,有力度,严肃又不失诙谐,并且注重于如何在最小的篇幅内告诉读者最多的信息。

杂志主要关注政治和商业方面的新闻,但是每期也有一两篇针对科技和艺术的报导,以及一些书评。杂志中所有文章都不署名,而且往往带有鲜明的立场,但又处处用事实说话。主编们认为:写出了什么东西,比出自谁的手笔更重要。

但是该网站的文章一个账号每周只能免费阅读3篇,订阅价格大约是一个月100港元。

假如是经常阅读该网站文章自然是订阅支持一下更好,但假如只是偶尔想看几篇文章订阅的性价比就不高了。

但是我在点开网页的过程中发现到文章先是被完全加载出来后突然消失到只剩标题的,由此我猜测该网站的每周3篇文章上限这条规定是识别Cookie后执行的,由此我再猜测假如果我只写一个requests请求是不是就能拿到含有文章信息的网页源代码呢?然后再解析一下是不是就能拿到文章的文本了呢?

下面是我写的一个简单的文章爬虫:

代码语言:javascript
复制
import requests
from pyquery import PyQuery as pq

url = 'https://www.economist.com/special-report/2017/10/05/commodities-are-not-always-bad-for-you'

def get_text(url):
    html = requests.get(url).text
    doc = pq(html)
    article = doc('article')
    h1 = article('h1 span').text()  # 文章标题
    print(h1+'\n')
    rubric = article('.blog-post__rubric').text()  # 红字标题
    print(rubric+'\n')

    div_imgs = article('.blog-post__image').items()  # 文章图片
    text = article('.blog-post__text')  # 文章文本
    ps = text('p').items()  # 文章段落
    h2s = text('.xhead').items()  # 文章小标题

    for p in ps:
        if not p.text().startswith('Upgrade your inbox'):  # 过滤一行广告文本
            print(p.text()+'\n')

    for h2 in h2s:
        print(h2.text()+'\n')

    for div_img in div_imgs:
        img = div_img('img').attr.src
        print(img)
        
get_text(url)

这个爬虫没加任何headers,但确实能拿到文章内容和文章中的配图,只是不知道小标题在文章的什么位置。

当然这是一个不规范的很简陋的爬虫脚本。目的只是为了个人能多阅读两篇经济学人杂志文章。下面是该爬虫运行示例:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档