Python中利用requests库和BeautifulSoup库实现Web抓取和数据爬取 您所在的位置:网站首页 xlsxwriter模块的用法 Python中利用requests库和BeautifulSoup库实现Web抓取和数据爬取

Python中利用requests库和BeautifulSoup库实现Web抓取和数据爬取

#Python中利用requests库和BeautifulSoup库实现Web抓取和数据爬取| 来源: 网络整理| 查看: 265

requests库是一个Python的HTTP客户端库,它使得发送HTTP/1.1请求变得非常容易。requests库可以简化HTTP请求过程,例如为不同的请求方式提供不同的方法(比如GET和POST),自动对请求参数进行编码,设置请求头,设置cookies等。requests库还可以处理大多数HTTP响应。

BeautifulSoup是一个解析HTML和XML文档的Python库。它从HTML或XML文件中提取结构化数据,并非常适合于web抓取相关的应用程序。BeautifulSoup不仅可以处理不良的HTML(即不严格的标记语言),还可以从HTML文档中提取有价值的信息。

下面是对这两个库的使用进行详细的讲解:

requests库

使用requests库可以模拟HTTP/1.1请求。例如:

import requests # 发送一个GET请求 r = requests.get('https://www.baidu.com/') # 发送一个POST请求 payload = {'key1': 'value1', 'key2': 'value2'} r = requests.post('https://httpbin.org/post', data=payload) print(r.status_code) print(r.text)

在上面的代码中,我们使用了requests库发送了两个HTTP/1.1请求。第一个请求是一个GET请求,我们将其发送到百度的主页。第二个请求是一个POST请求,我们提交了一个数据字典作为请求参数。每个请求都返回一个Response对象,我们可以通过该对象的属性来获取响应的数据。例如,我们可以使用status_code属性获得HTTP响应的状态码,使用text属性获取响应的文本数据。

BeautifulSoup库

使用BeautifulSoup库可以解析HTML和XML文档。例如:

from bs4 import BeautifulSoup # 解析HTML文档 html_doc = '这是一个标题

这是一段正文。

' soup = BeautifulSoup(html_doc, 'html.parser') # 获取HTML节点 print(soup.h1.string) print(soup.p['class'])

在上面的代码中,我们使用BeautifulSoup库解析了一个HTML文档。我们使用’html.parser’解析器来解析HTML文档。我们可以使用soup对象的各种属性和方法来获取文档中的数据。例如,我们使用h1属性和string属性来获取标题的文本,使用p属性和’class’键来获取正文的CSS类名。

以下是一个结合使用requests库和BeautifulSoup库的示例程序:

import requests from bs4 import BeautifulSoup # 发送HTTP请求 url = 'https://www.tripadvisor.cn/Restaurants-g188590-Amsterdam_North_Holland_Province.html' r = requests.get(url) # 解析HTML文档 soup = BeautifulSoup(r.content, 'html.parser') # 提取信息 restaurant_list = [] listing = soup.find_all('div', {'class': 'wQjYiB7z'}) for l in listing: name = l.find('a', {'class': 'wQjYiB7z'}).text.strip() rating = float(l.find('span', {'class': 'r2Cf69qf'}).text.strip()) review_count = int(l.find('a', {'class': 'wofh7u5n'}).text.strip()[:-3]) restaurant_list.append({'name': name, 'rating': rating, 'review_count': review_count}) # 输出结果 for restaurant in restaurant_list: print('餐厅名称: %s,评分: %f,评论数量: %d' % (restaurant['name'], restaurant['rating'],restaurant['review_count']))

在上面的代码中,我们使用requests库发送了一个GET请求,获取了TripAdvisor网站上阿姆斯特丹地区的餐厅列表。然后,我们使用BeautifulSoup库解析HTML文档,并使用find_all()方法查找所有餐厅的信息。最后,我们从每个餐厅的HTML节点中提取信息并保存到一个列表中。最后,我们使用简单的格式化操作打印了每个餐厅的信息。

结合使用requests库和BeautifulSoup库可以使web抓取和数据爬取变得更加简单和高效。利用它们,我们可以自动从网站上收集有用的信息,并进行后续处理和分析。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有