使用爬虫爬取百度搜索结果及各网站正文(request库、selenium库和beautifulsoup库)
以下是一个使用Python的requests库、selenium库和beautifulsoup库来爬取百度搜索结果中各网页正文内容的示例代码。请注意,这个例子仅用于学习目的,实际应用中可能需要遵守相关法律法规,并且可能涉及到自动化测试和数据抓取的道德标准。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import requests
import time
# 初始化webdriver
driver_path = 'path/to/your/chromedriver' # 替换为你的ChromeDriver路径
driver = webdriver.Chrome(executable_path=driver_path)
# 设置搜索词
search_term = "Python"
# 打开百度首页
driver.get("https://www.baidu.com")
# 等待输入框被加载出来
input_box = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'kw'))
)
# 输入搜索词
input_box.send_keys(search_term)
# 提交搜索
submit_button = driver.find_element_by_id('su')
submit_button.click()
# 等待搜索结果加载完成
results = WebDriverWait(driver, 20).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.result.c-container'))
)
# 循环遍历搜索结果
for result in results:
# 获取结果链接
link = result.find_element_by_css_selector('.t a').get_attribute('href')
# 使用requests获取页面内容
res = requests.get(link)
soup = BeautifulSoup(res.text, 'html.parser')
# 找到正文
content = soup.find('div', class_='content')
if content:
print(content.get_text())
else:
print('正文未找到')
# 为了避免被封,每次循环后暂停一段时间
time.sleep(5)
# 清理webdriver
driver.quit()
请确保在运行代码前已经安装了selenium库(pip install selenium
)、beautifulsoup库(pip install beautifulsoup4
)以及对应的浏览器驱动程序(如ChromeDriver),并且已经正确配置了driver_path
变量。
以上代码实现了以下功能:
- 启动一个webdriver(这里以Chrome为例)。
- 打开百度首页并输入搜索词。
- 提交搜索并等待搜索结果加载完成。
- 遍历搜索结果,使用requests库获取每个结果页面的内容。
- 使用beautifulsoup解析页面并寻找正文内容。
- 打印正文内容或者提示正文未找到。
- 循环结束后清理webdriver实例。
注意:为了避免被搜索引擎或网站认为是爬虫,代码中添加了时间延迟。在实际应用中,应当根据需要和网站的政策合理地设置延迟,或者采用更高级的反爬机制处理。
评论已关闭