赞
踩
requests库是一个Python的HTTP客户端库,它使得发送HTTP/1.1请求变得非常容易。requests库可以简化HTTP请求过程,例如为不同的请求方式提供不同的方法(比如GET和POST),自动对请求参数进行编码,设置请求头,设置cookies等。requests库还可以处理大多数HTTP响应。
BeautifulSoup是一个解析HTML和XML文档的Python库。它从HTML或XML文件中提取结构化数据,并非常适合于web抓取相关的应用程序。BeautifulSoup不仅可以处理不良的HTML(即不严格的标记语言),还可以从HTML文档中提取有价值的信息。
下面是对这两个库的使用进行详细的讲解:
使用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库可以解析HTML和XML文档。例如:
- from bs4 import BeautifulSoup
-
- # 解析HTML文档
- html_doc = '<html><body><h1>这是一个标题</h1><p class="main">这是一段正文。</p></body></html>'
- 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 © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。