经济学人文章爬虫
时间:2022-06-15
本文章向大家介绍经济学人文章爬虫,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
因为偶然的机会知道了经济学人这个网站,下面是引自百度百科的相关介绍:
《经济学人》是一份由伦敦经济学人报纸有限公司出版的杂志,创办于1843年9月,创办人詹姆士·威尔逊。杂志的大多数文章写得机智,幽默,有力度,严肃又不失诙谐,并且注重于如何在最小的篇幅内告诉读者最多的信息。
杂志主要关注政治和商业方面的新闻,但是每期也有一两篇针对科技和艺术的报导,以及一些书评。杂志中所有文章都不署名,而且往往带有鲜明的立场,但又处处用事实说话。主编们认为:写出了什么东西,比出自谁的手笔更重要。
但是该网站的文章一个账号每周只能免费阅读3篇,订阅价格大约是一个月100港元。
假如是经常阅读该网站文章自然是订阅支持一下更好,但假如只是偶尔想看几篇文章订阅的性价比就不高了。
但是我在点开网页的过程中发现到文章先是被完全加载出来后突然消失到只剩标题的,由此我猜测该网站的每周3篇文章上限这条规定是识别Cookie后执行的,由此我再猜测假如果我只写一个requests
请求是不是就能拿到含有文章信息的网页源代码呢?然后再解析一下是不是就能拿到文章的文本了呢?
下面是我写的一个简单的文章爬虫:
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
,但确实能拿到文章内容和文章中的配图,只是不知道小标题在文章的什么位置。
当然这是一个不规范的很简陋的爬虫脚本。目的只是为了个人能多阅读两篇经济学人杂志文章。下面是该爬虫运行示例:
- FZU 2167 大王叫我来巡山呐
- HDU 1021 Fibonacci Again
- Hadoop数据分析平台实战——180Oozie工作流使用介绍离线数据分析平台实战——180Oozie工作流使用介绍
- 博弈论及算法实现
- Hadoop数据分析平台实战——160Sqoop介绍离线数据分析平台实战——160Sqoop介绍
- HDU 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
- Hadoop数据分析平台实战——150Flume介绍离线数据分析平台实战——150Flume介绍
- Codeforces 714A Meeting of Old Friends
- Code forces 719A Vitya in the Countryside
- Hadoop数据分析平台实战——190Highcharts介绍离线数据分析平台实战——190Highcharts介绍
- HUST 1555 A Math Homework
- HUST 1541 Student’s question
- HDU 3785 寻找大富翁
- Hadoop数据分析平台实战——250JSSDK数据收集引擎编写离线数据分析平台实战——250JSSDK数据收集引擎编写
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android之ImageSwitcher的实例详解
- Android中HTTP请求中文乱码解决办法
- Android编程之播放器MediaPlayer实现均衡器效果示例
- Android studio点击跳转WebView详解
- Android webveiw 出现栈错误解决办法
- Android开发之实现手势滑动的功能
- Android编程实现带有单选按钮和复选按钮的dialog功能示例
- Android中Retrofit 2.0直接使用JSON进行数据交互
- Android自定义Drawable实现圆形和圆角
- Android jni调试打印char阵列的实例详解
- 写JavaScript函数不得不知的高级技巧
- Android编程视频播放API之MediaPlayer用法示例
- Android实现点击缩略图放大效果
- Android 应用签名的两种方法
- Android 关闭多个Activity的实现方法