使用 Python 请求生成的错误搜索



我想做的是搜索StackOverflow的答案。我知道以前可能做过,但我想再做一次。带有图形用户界面。无论如何,这有点落后,因为现在我只是想进入一个问题得票最多的页面。我在尝试查看如何进入嵌套div 以获取第一个答案的链接时注意到我的搜索已关闭并将我带到错误的地方。我正在使用BeautifulSoup和Requests以及python3来做到这一点。

#!/usr/bin/env python3
import requests 
from bs4 import BeautifulSoup
payload = {'q': 'open GL cube'}
page = requests.get("https://stackoverflow.com/search",params=payload)
print(" URL IS ", page.url)
data = page.content
soup = BeautifulSoup(data, 'lxml')
top = soup.find('a', {'title':'Highest voted search results'})['href']
print(top)
page2 = requests.get("https://stackoverflow.com",params=top)
print(page2.url)
data2 = page2.content
topSoup = BeautifulSoup(data2, 'lxml')
for div in topSoup.find_all('div', {'class':'result-link'}):
print(div.text)

我得到链接,它输出/搜索?标签=投票&q=open%GL%20cube

但是当我用参数传递它时,它确实 https://stackoverflow.com/?/search?tab=votes&q=open%GL%20cube

我想摆脱/?/

不要将其作为参数传递,只需将其添加到 URL 中即可:

page2 = requests.get("https://stackoverflow.com" + top)

传递requests参数后,它会在将新参数连接到链接之前向链接添加一个?

请求 - 在 URL 中传递参数

此外,如前所述,您应该真正使用 API。

为什么不使用 API?

有很多搜索选项(https://api.stackexchange.com/docs/advanced-search(,你可以得到JSON的响应,不需要丑陋的HTML解析。

最新更新