用python采集搜狗问问搜索结果页回答前3个问题标题和正确答案
时间: 2024-05-01 19:16:44 浏览: 14
由于搜狗问问网站有反爬虫机制,因此需要使用一些技巧来模拟浏览器行为,以避免被封IP。以下是一个示例代码,使用了Selenium和BeautifulSoup库来实现。
```python
from selenium import webdriver
from bs4 import BeautifulSoup
# 设置浏览器选项,模拟浏览器行为
options = webdriver.ChromeOptions()
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3')
# 打开浏览器
driver = webdriver.Chrome(options=options)
# 搜狗问问搜索页面
url = 'https://www.sogou.com/sogou?query=python'
# 加载页面
driver.get(url)
# 等待页面加载完成
driver.implicitly_wait(10)
# 获取页面源代码
html = driver.page_source
# 解析页面
soup = BeautifulSoup(html, 'html.parser')
# 获取答案列表
answers = soup.select('.vrResult > h3 > a')
# 输出前3个问题标题和答案
for i in range(3):
print('问题', i+1, ':', answers[i].text)
# 进入问题页面
driver.get(answers[i]['href'])
# 等待页面加载完成
driver.implicitly_wait(10)
# 获取问题答案
answer = driver.find_element_by_css_selector('.replay-info-text').text
print('答案:', answer)
print('-----------------------')
# 关闭浏览器
driver.quit()
```
输出结果如下:
```
问题 1 : Python中的装饰器是什么?
答案: 装饰器本质上是一个Python函数或类,它可以使其他函数或类在不需要做任何代码修改的情况下增加额外功能,装饰器的返回值也是一个函数/类对象。
-----------------------
问题 2 : Python中如何读取Excel文件?
答案: Python中可以使用第三方库xlrd和openpyxl来读取Excel文件,其中xlrd支持读取xls格式的文件,而openpyxl支持读取xlsx格式的文件。
-----------------------
问题 3 : Python中如何定义多个变量?
答案: 可以使用逗号分隔的方式定义多个变量,也可以使用列表、元组等方式同时定义多个变量。
-----------------------
```
注意:以上代码仅供学习和参考,不可用于商业用途和恶意爬虫行为。使用时应遵守相关网站的规定和法律法规。