簡體   English   中英

使用Python請求生成的搜索錯誤

[英]Wrong search generated with Python requests

我想做的是搜索StackOverflow尋找答案。 我知道它可能以前已經做過,但是我想再做一次。 帶有GUI。 無論如何,就像現在這樣,我只是想進入一個問題的投票最多的頁面。 我在嘗試查看如何進入嵌套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)

我得到了鏈接,它輸出/ search?tab = votes&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解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM