百度搜索是我们日常生活中经常使用的一种信息获取方式。我们通常在搜索框中输入关键词,然后百度会返回与关键词相关的一系列结果。但是,有时候我们需要从这些结果中提取出某些信息,比如排名前几的网站、标题、摘要等。这时,我们可以借助Python来实现这个功能。
Python是一种非常流行的编程语言,它具有简单易学、功能强大等优点,在日常生活和工作中被广泛应用。Python可以用于网络爬虫、数据处理、人工智能等多个领域,因此也被称为“全能编程语言”。
下面,我们将介绍如何用Python提取百度搜索结果的方法。
一、爬取搜索结果页面
首先,我们需要用Python来爬取百度搜索结果页面。这里我们可以使用Python中的requests库和BeautifulSoup库。requests库可以帮助我们发送HTTP请求,获取网页内容;BeautifulSoup库则可以帮助我们解析HTML页面。
以下是爬取百度搜索结果页面的代码:
```
import requests
from bs4 import BeautifulSoup
def get_html(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
def get_search_results(keywords):
url = "https://www.baidu.com/s?wd=" + keywords
html = get_html(url)
soup = BeautifulSoup(html, "html.parser")
return soup
```
上述代码中,get_html函数用于获取页面内容,get_search_results函数用于获取搜索结果页面的BeautifulSoup对象。
二、解析搜索结果页面
获取了搜索结果页面的BeautifulSoup对象后,我们需要解析页面,提取出我们需要的信息。在百度搜索结果页面中,每个搜索结果都被包装在一个
以下是解析搜索结果页面的代码:
```
def parse_search_results(soup):
results = []
for result in soup.find_all("div", class_="result"):
title = result.h3.a.get_text()
link = result.h3.a["href"]
abstract = result.find("div", class_="c-abstract").get_text()
results.append((title, link, abstract))
return results
```
上述代码中,我们遍历每个
三、完整代码示例
将上述代码组合起来,我们可以得到完整的提取百度搜索结果的Python代码:
```
import requests
from bs4 import BeautifulSoup
def get_html(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
def get_search_results(keywords):
url = "https://www.baidu.com/s?wd=" + keywords
html = get_html(url)
soup = BeautifulSoup(html, "html.parser")
return soup
def parse_search_results(soup):
results = []
for result in soup.find_all("div", class_="result"):
title = result.h3.a.get_text()
link = result.h3.a["href"]
abstract = result.find("div", class_="c-abstract").get_text()
results.append((title, link, abstract))
return results
if __name__ == "__main__":
keywords = input("请输入搜索
【关键词】")
soup = get_search_results(keywords)
results = parse_search_results(soup)
for i, result in enumerate(results):
print(f"{i+1}、{result[0]}")
print(f"链接:{result[1]}")
print(f"