简介
作为技术工程师,在繁忙的工作中我们不一定有时间浏览发生的热点新闻,但是懂技术的我们不需要访问网站来看当下发生的大事,我们可以使用网络爬虫的技术来获取当下最新最热的新闻,本文就来介绍一下使用Python抓取一下百度新闻的页面内容。
环境准备
我们会使用到的库都是常用的库,requests
和beautifulsoup
是我们这次使用到的库,安装命令如下:
pip install requests beautifulsoup4
抓取页面内容
首先,我们使用requests库发送HTTP请求,并获取网页的内容。示例代码如下:
import requests
url = 'http://news.baidu.com/'
response = requests.get(url)
html = response.text
print(html)
以上代码中,我们使用了requests库发送了一个GET请求,并通过response.text属性获取了网页的HTML内容。
接下来,我们可以使用BeautifulSoup库将获取到的HTML内容进行解析,并提取所需的信息。示例代码如下:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
news_list = soup.find_all('a', class_='f-title')
for news in news_list:
print(news.get('href'))
print(news.get_text())
以上代码中,我们使用BeautifulSoup
库解析了HTML内容,并通过find_all
方法找到了所有class为"f-title"
的a标签,然后通过get
方法获取了链接和标题。
解析新闻内容
在上一步中,我们已经获取到了新闻的链接和标题。接下来,我们需要进一步解析新闻的内容。
首先,我们可以使用前面提到的requests库,发送新闻链接的HTTP请求,获取新闻详细内容的HTML。示例代码如下:
news_url = 'http://news.baidu.com/some_news_url'
news_response = requests.get(news_url)
news_html = news_response.text
print(news_html)
然后,我们可以使用BeautifulSoup库解析新闻的HTML内容,提取新闻的正文内容。示例代码如下:
news_soup = BeautifulSoup(news_html, 'html.parser')
news_content = news_soup.find('div', class_='news-content')
print(news_content.get_text())
以上代码中,我们假设新闻内容所在的标签的class属性为"news-content",通过find
方法找到该标签,并通过get_text
方法获取标签内的文本内容。
数据保存与处理
在前两步中,我们已经获取到了新闻的链接、标题和内容。接下来,我们可以将这些数据保存到本地文件或数据库中,或者进行进一步的数据处理。
一种常见的保存数据的方式是将数据写入到CSV文件中。示例代码如下:
import csv
data = [['链接', '标题', '内容'],
['http://news.baidu.com/some_news_url', '新闻标题1', '新闻内容1'],
['http://news.baidu.com/some_news_url', '新闻标题2', '新闻内容2'],
['http://news.baidu.com/some_news_url', '新闻标题3', '新闻内容3']]
with open('news.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data)
以上代码中,我们首先定义了一个二维列表data,包含了新闻的链接、标题和内容。然后使用csv库将数据写入到名为news.csv的文件中。
注:在爬取网站数据时,请确保遵守相关的法律法规和网站的使用政策,以避免法律纠纷。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!