python:输入关键字进行百度搜索并爬取搜索结果存放在csv中
时间: 2023-06-23 08:02:14 浏览: 273
【python爬虫源代码】用python爬取百度搜索的搜索结果!
5星 · 资源好评率100%
### 回答1:
Python是一种非常流行的编程语言,可以用它编写各种不同类型的程序。在这篇文章中,我们将介绍如何使用Python实现一个功能:输入关键字进行百度搜索并爬取搜索结果存放在csv中。
要完成这个任务,我们需要利用Python的两个主要库来实现:
1. requests:这个库用来向百度搜索发出请求,获取搜索结果的HTML代码。
2. BeautifulSoup:这个库用来解析HTML代码,抓取其中的关键信息。
首先,让我们先导入这两个库,并定义一个函数来进行搜索,爬取结果,并将结果保存在csv文件中:
```
import requests
from bs4 import BeautifulSoup
import csv
def search_and_scrape(keyword):
url = 'https://www.baidu.com/s'
params = {'wd': keyword}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
result_file = open('search_result.csv', 'a', newline='')
write_csv = csv.writer(result_file)
# 发送请求
response = requests.get(url, params=params, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
result_divs = soup.find_all('div', {'class': 'result'})
# 解析HTML代码,获取搜索结果,并写入CSV文件
for result in result_divs:
title = result.h3.get_text()
link = result.h3.a['href']
snippet = result.find('div', {'class': 'c-abstract'}).get_text()
write_csv.writerow([title, link, snippet])
result_file.close()
```
这个函数的参数是我们希望搜索的关键字,在这个例子中我们把它叫做“keyword”。函数使用了requests发送了一个GET请求,使用了传入的参数查询了百度,并获取了搜索结果的HTML代码。接着使用BeautifulSoup包解析代码,找到搜索结果的每一条数据,并将数据写入CSV文件。
我们可以在Python的命令行中使用这个函数,执行以下代码:
```
search_and_scrape('Python')
```
这行代码将搜索“Python”关键字,并把搜索结果写入search_results.csv文件中。
这里我们使用了CSV(逗号分隔值)格式来存储数据,这个格式常用于电子表格软件或数据库的导入和导出。在这个例子中,我们只需要将数据写入CSV文件。
在这篇文章中,我们学习了如何使用Python实现一个功能:输入关键字进行百度搜索并爬取搜索结果存放在csv中。我们使用了两个Python库:requests和BeautifulSoup,并编写了一个函数来实现这个功能。这个例子可以扩展到各种搜索引擎和数据格式中。
### 回答2:
通过使用Python编程语言,我们可以实现输入关键字进行百度搜索并爬取搜索结果,并将这些结果存储在CSV格式文件中。
首先,我们需要使用Python的Requests库向百度搜索页面发送HTTP请求,以获取关键字的搜索结果页面。接下来,我们可以使用BeautifulSoup库解析HTML页面并提取搜索结果的相关信息,例如标题、URL和描述。最后,我们可以使用Python的Pandas库创建一个CSV文件,并将爬取到的搜索结果写入该文件以进行存储。
整个过程的示例代码如下:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
keyword = input("请输入搜索关键字:")
url = f"https://www.baidu.com/s?wd={keyword}"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"}
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, "html.parser")
results = []
for result in soup.find_all('div', {'class': 'result'}):
title = result.find('h3').text
url = result.find('a')['href']
desc = result.find('div', {'class': 'c-abstract'}).text
results.append({'title': title, 'url': url, 'desc': desc})
df = pd.DataFrame(results)
df.to_csv(f"{keyword}.csv", encoding='utf-8', index=False)
print("搜索结果已保存至CSV文件中。")
```
该程序会要求用户输入搜索关键字。一旦输入关键字并按下回车键,在百度搜索页面进行HTTP请求。之后,程序会解析搜索结果页面并提取每个搜索结果的标题、URL和描述。最后,结果将保存在CSV文件中,文件名将基于搜索关键字。
使用该程序,您可以快速创建一个有用的工具,以便在日常搜索任务(例如市场研究或竞争分析)中自动化搜索并存储结果。
### 回答3:
对于这个任务,我们需要用到以下几个模块:
1. requests:用于发送HTTP请求,以获取页面内容;
2. BeautifulSoup:用于解析HTML页面,提取需要的信息;
3. csv:用于操作CSV文件,以存储爬取到的数据。
首先,我们需要向用户获取输入的关键字,并构造百度搜索URL。然后发送HTTP请求,获取搜索结果页面的HTML。如下所示:
```
import requests
from bs4 import BeautifulSoup
# 获取用户输入的关键字
keyword = input('请输入关键字:')
# 构造百度搜索URL
url = 'https://www.baidu.com/s?wd=' + keyword
# 发送HTTP请求,获取搜索结果页面HTML
response = requests.get(url)
html = response.content
```
接下来,我们需要解析HTML页面,提取搜索结果信息。在百度搜索结果页面,每个搜索结果都被包含在一个`<div>`标签中,其`class`属性为`result c-container`。我们可以使用BeautifulSoup对HTML进行解析,提取需要的信息。如下所示:
```
# 定义一个空列表,用于存放搜索结果
results = []
# 解析HTML,提取搜索结果信息
soup = BeautifulSoup(html, 'html.parser')
divs = soup.find_all('div', {'class': 'result c-container'})
for div in divs:
title = div.find('h3').get_text().strip()
link = div.find('a').get('href')
abstract = div.find('div', {'class': 'c-abstract'}).get_text().strip()
# 将搜索结果存放在字典中,然后添加到列表中
result = {'title': title, 'link': link, 'abstract': abstract}
results.append(result)
```
最后,我们需要使用csv模块,将爬取到的搜索结果存储到CSV文件中。如下所示:
```
import csv
# 将搜索结果写入CSV文件
with open('results.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
# 写入表头
writer.writerow(['标题', '链接', '摘要'])
# 写入搜索结果
for result in results:
writer.writerow([result['title'], result['link'], result['abstract']])
```
完整代码如下所示:
```
import requests
from bs4 import BeautifulSoup
import csv
# 获取用户输入的关键字
keyword = input('请输入关键字:')
# 构造百度搜索URL
url = 'https://www.baidu.com/s?wd=' + keyword
# 发送HTTP请求,获取搜索结果页面HTML
response = requests.get(url)
html = response.content
# 定义一个空列表,用于存放搜索结果
results = []
# 解析HTML,提取搜索结果信息
soup = BeautifulSoup(html, 'html.parser')
divs = soup.find_all('div', {'class': 'result c-container'})
for div in divs:
title = div.find('h3').get_text().strip()
link = div.find('a').get('href')
abstract = div.find('div', {'class': 'c-abstract'}).get_text().strip()
# 将搜索结果存放在字典中,然后添加到列表中
result = {'title': title, 'link': link, 'abstract': abstract}
results.append(result)
# 将搜索结果写入CSV文件
with open('results.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
# 写入表头
writer.writerow(['标题', '链接', '摘要'])
# 写入搜索结果
for result in results:
writer.writerow([result['title'], result['link'], result['abstract']])
print('搜索结果已保存到results.csv文件中。')
```
阅读全文