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实现将汉字转换成汉语拼音的库
May 05 Python
Python编程之多态用法实例详解
May 19 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
django rest framework之请求与响应(详解)
Nov 06 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
基于梯度爆炸的解决方法:clip gradient
Feb 04 Python
python实现与redis交互操作详解
Apr 21 Python
Django之腾讯云短信的实现
Jun 12 Python
浅析Python 字符编码与文件处理
Sep 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php数据访问之查询关键字
2016/05/09 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
Django Highcharts制作图表
2016/08/27 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
积极分子思想汇报
2014/01/04 职场文书
班班通项目实施方案
2014/02/25 职场文书
数学系毕业生求职信
2014/05/29 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
spring boot中nativeQuery的用法
2021/07/26 Java/Android