Python 通过requests实现腾讯新闻抓取爬虫的方法


Posted in Python onFebruary 22, 2019

最近也是学习了一些爬虫方面的知识。以我自己的理解,通常我们用浏览器查看网页时,是通过浏览器向服务器发送请求,然后服务器响应以后返回一些代码数据,再经过浏览器解析后呈现出来。而爬虫则是通过程序向服务器发送请求,并且将服务器返回的信息,通过一些处理后,就能得到我们想要的数据了。

以下是前段时间我用python写的一个爬取TX新闻标题及其网址的一个简单爬虫:

首先需要用到python中requests(方便全面的http请求库)和 BeautifulSoup(html解析库)。

通过pip来安装这两个库,命令分别是:pip install requests 和 pip install bs4 (如下图)

Python 通过requests实现腾讯新闻抓取爬虫的方法

先放上完整的代码

# coding:utf-8
import requests
from bs4 import BeautifulSoup
 
url = "http://news.qq.com/"
# 请求腾讯新闻的URL,获取其text文本
wbdata = requests.get(url).text
# 对获取到的文本进行解析
soup = BeautifulSoup(wbdata,'lxml')
# 从解析文件中通过select选择器定位指定的元素,返回一个列表
news_titles = soup.select("div.text > em.f14 > a.linkto")
 
# 对返回的列表进行遍历
for n in news_titles:
  title = n.get_text()
  link = n.get("href")
  data = {
    '标题':title,
    '链接':link
  }
  print(data)

首先引入上述两个库

import requests
from bs4 import BeautifulSoup

然后get请求腾讯新闻网url,返回的字符串实质上就是我们手动打开这个网站,然后查看网页源代码所看到的html代码。

wbdata = requests.get(url).text

我们需要的仅仅是某些特定标签里的内容:

Python 通过requests实现腾讯新闻抓取爬虫的方法

Python 通过requests实现腾讯新闻抓取爬虫的方法

可以看出,每条新闻链接、标题都在<div class="text">标签的<em class="f14 124">标签下

之后我们将刚刚请求得到的html代码进行处理,这时候就需要用到BeautifulSoap库了

soup = BeautifulSoup(wbdata,'lxml')

这一行的意思是对获取的信息进行解析处理,也可以将lxml库换成html.parser库,效果是相同的

news_titles = soup.select("div.text > em.f14 > a.linkto")

这一行是利用刚刚经过解析获取的soup对象,选择我们需要的标签,返回值是一个列表。列表中存放了我们需要的所有标签内容。也可以使用BeautifulSoup中的find()方法或findall()方法来对标签进行选择。

最后用 for in 对列表进行遍历,分别取出标签中的内容(新闻标题)和标签中href的值(新闻网址),存放在data字典中

for n in news_titles:
  title = n.get_text()
  link = n.get("href")
  data = {
    '标题':title,
    '链接':link
  }

data存放的就是所有的新闻标题和链接了,下图是部分结果

Python 通过requests实现腾讯新闻抓取爬虫的方法

这样一个爬虫就完成了,当然这只是一个最简单的爬虫。深入爬虫的话还有许多模拟浏览器行为、安全问题、效率优化、多线程等等需要考虑,不得不说爬虫是一个很深的坑。

python中爬虫可以通过各种库或者框架来完成,requests只是比较常用的一种而已。其他语言中也会有许多爬虫方面的库,例如php可以使用curl库。爬虫的原理都是一样的,只是用不同语言、不同库来实现的方法不一样。

以上这篇Python 通过requests实现腾讯新闻抓取爬虫的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单介绍Python中的decode()方法的使用
May 18 Python
理解Python垃圾回收机制
Feb 12 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
Python Django使用forms来实现评论功能
Aug 17 Python
关于Django外键赋值问题详解
Aug 13 Python
儿童python练习实例
May 27 Python
Python RabbitMQ消息队列实现rpc
May 30 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
pycharm全局搜索的具体步骤
Jul 28 Python
手残删除python之后的补救方法
Jun 26 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 #Python
浅谈python3.6的tkinter运行问题
Feb 22 #Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 #Python
在Python运行时动态查看进程内部信息的方法
Feb 22 #Python
Python开启线程,在函数中开线程的实例
Feb 22 #Python
python 多线程串行和并行的实例
Feb 22 #Python
Python OOP类中的几种函数或方法总结
Feb 22 #Python
You might like
ajax实现无刷新分页(php)
2010/07/18 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
详解vue中组件参数
2018/07/09 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
战略合作协议书范本
2014/04/18 职场文书
大型营销活动计划书
2014/04/28 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
物理学专业求职信
2014/07/04 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
考试作弊检讨书
2014/10/21 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
长城导游词
2015/01/30 职场文书
祝酒词范文
2015/08/12 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python