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登录Dr.com思路以及代码分享
Jun 25 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
Django的数据模型访问多对多键值的方法
Jul 21 Python
python正则实现提取电话功能
Feb 24 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
Django中如何使用sass的方法步骤
Jul 09 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
10个示例带你掌握python中的元组
Nov 23 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
python实现图片批量压缩
Apr 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
JS动画效果代码3
2008/04/03 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python操作串口的方法
2015/06/17 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
大学生职业规划论文
2014/01/11 职场文书
2015年母亲节寄语
2015/03/23 职场文书
2015年司法所工作总结
2015/04/27 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android