作为一名网站作者,我们经常需要通过爬虫来获取数据,而Python语言中,最为流行的爬虫库就是Requests和BeautifulSoup。下面我会为大家介绍使用这两个库进行网页数据抓取的完整攻略。
步骤一:安装和导入库
首先,我们需要安装相应的库。在命令行中输入以下命令进行安装:
pip install requests
pip install beautifulsoup4
安装完成后,我们需要在脚本中导入这两个库:
import requests
from bs4 import BeautifulSoup
步骤二:发送请求
爬虫的第一步是通过网络发送一个HTTP请求,获取到目标页面的HTML内容。在Python中,我们可以使用requests库来发送请求。比如下面这段代码可以用来获取一个网页的HTML内容:
url = "http://www.example.com"
response = requests.get(url)
html = response.text
print(html)
上面的代码通过get方法向url地址发送请求,然后将返回的内容存储在response对象中,最后使用response对象的text属性获取HTML文本。
步骤三:解析HTML文本
获取到HTML文本后,我们需要解析其中的有用信息。这时候就要使用到BeautifulSoup库了。假如我们需要获取一个网页中所有的超链接,代码如下:
soup = BeautifulSoup(html, 'html.parser')
links = soup.find_all('a')
for link in links:
print(link['href'])
上面的代码首先使用BeautifulSoup将HTML文本转换成一个可操作的对象soup,然后使用find_all方法获取所有的a标签,最后遍历a标签,获取其中的href属性。
示例一:获取股票数据
下面我们通过一个实际案例来说明如何使用上述方法爬取数据。假设我们需要从东方财富网爬取某只股票的历史交易数据,代码如下:
stock_code = '600519'
url = f'http://quotes.money.163.com/trade/lsjysj_{stock_code}.html'
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
table = soup.find_all('table')[0]
column_names = [th.text for th in table.select('thead tr th')]
data = []
for tr in table.select('tbody tr'):
row_data = [td.text for td in tr.select('td')]
data.append(row_data)
print(column_names)
print(data)
上面的代码首先获取目标网页的HTML文本,然后使用BeautifulSoup解析HTML文本,再通过find_all方法获取表格数据。表格数据的第一行是表头,我们使用select方法获取,并将每一列的标题保存在column_names数组中。数据行使用select方法获取,将每行的数据放入row_data中,最终将所有行的数据放入data列表中。
示例二:获取知乎首页的热榜
我们也可以使用上述方法来爬取知乎的热榜数据。代码如下:
url = 'https://www.zhihu.com/hot'
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
hot_list = soup.select('div.TopstoryItem')
for item in hot_list:
title = item.select('h2')[0].text.strip()
url = item.select('a')[0]['href']
print(title, url)
上述代码首先获取知乎热榜页面的HTML文本,然后使用BeautifulSoup解析HTML文本。通过select方法获取每个热榜条目的元素,然后从中获取标题和URL,最终打印出来。
至此,使用Requests和BeautifulSoup进行网页数据抓取的完整攻略就介绍完了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫之使用BeautifulSoup和Requests抓取网页数据 - Python技术站