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读取注册表中值的方法
Apr 08 Python
python缩进区别分析
Feb 15 Python
用Python的线程来解决生产者消费问题的示例
Apr 02 Python
python计算时间差的方法
May 20 Python
django中的setting最佳配置小结
Nov 21 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 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
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
常用的javascript设计模式
2017/01/11 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python基础知识_浅谈用户交互
2017/05/31 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
网页美工求职信范文
2014/04/17 职场文书
法制教育演讲稿
2014/09/10 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
详解nginx location指令
2022/01/18 Servers
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python