网页新闻抓取(我用python及其网址的一个简单爬虫及其)
优采云 发布时间: 2021-10-24 01:11网页新闻抓取(我用python及其网址的一个简单爬虫及其)
最近也学习了一些爬虫的知识。以我个人的理解,当我们使用浏览器查看网页时,通常是通过浏览器向服务器发送请求,服务器响应并返回一些代码数据,然后由浏览器解析并呈现。爬虫通过程序向服务器发送请求,对服务器返回的信息进行一些处理后,就可以得到我们想要的数据。
下面是我前段时间用python写的一个简单的爬虫爬取TX新闻头条和网址:
首先需要使用python(一个方便全面的http请求库)和BeautifulSoup(html解析库)中的requests。
通过pip安装这两个库,命令为:pip install requests和pip install bs4(如下图)
先放完整代码
# 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
然后获取请求腾讯新闻的网址。返回的字符串本质上就是我们手动打开这个网站然后查看网页源码的html代码。
wbdata = requests.get(url).text
我们只需要某些标签的内容:
可以看出,每个新闻链接和标题都在
在标签的标签下
之后,我们将处理我们刚刚请求的 html 代码。这时候就需要用到BeautifulSoap库了。
soup = BeautifulSoup(wbdata,'lxml')
这行的意思是解析得到的信息,也可以用html.parser库替换lxml库,效果是一样的
news_titles = soup.select("div.text > em.f14 > a.linkto")
这一行是利用刚刚解析出来的soup对象来选择我们需要的标签,返回值是一个列表。我们需要的所有标签内容都存储在列表中。您还可以使用 BeautifulSoup 中的 find() 方法或 findall() 方法来选择标签。
最后使用for in遍历列表,取出标签中的内容(新闻标题)和标签中href的值(新闻网址),存入数据字典
for n in news_titles:
title = n.get_text()
link = n.get("href")
data = {
'标题':title,
'链接':link
}
数据存储所有新闻标题和链接,下图为部分结果
这样一个爬虫就完成了,当然这只是最简单的爬虫。如果深入爬虫,还有很多模拟浏览器行为、安全问题、效率优化、多线程等需要考虑。不得不说爬虫是个深坑。
python中爬虫可以通过各种库或者框架来完成,请求只是比较常用的一种。还有很多其他语言的爬虫相关库。例如,PHP 可以使用 curl 库。爬虫的原理是一样的,只是不同语言、不同库实现的方法不同。
以上通过请求实现腾讯新闻爬虫的Python方法就是我和大家分享的全部内容。希望能给大家一个参考,也希望大家支持Scripthome。