您好我正在嘗試根據串列中的查詢獲取 google 搜索的第一個 url。為簡單起見,我將使用與 2 年前類似問題相同的代碼。
from googlesearch import search
list_of_queries = ["Geeksforgeeks", "stackoverflow", "GitHub"]
results = []
for query in list_of_queries:
results.append(search(query, tld="co.in", num=1, stop=1, pause=2))
print (results)
現在這將回傳一個生成器物件串列。找到了一個解決方案,通過添加列印出結果串列
for result in results:
print (list(results))
但是,我希望結果串列采用字串串列的形式,以便網路抓取資料的 url。我發現的一種解決方案是添加
results_str = []
for result in results:
results_str.append(list(result))
當我列印 results_str 時,我將其作為輸出:
[['https://www.geeksforgeeks.org/'], ['https://stackoverflow.com/'], ['https://github.com/']]
正如人們所看到的,由于每個 url 周圍都有額外的括號,我什至不能直接將 results_str 用作 webscrape 的 url 串列。我想我可以通過按照這個答案洗掉括號來解決它,從而添加
results_str_new = [s.replace('[' and ']', '') for s in results_str]
但這只會導致 AttributeError
AttributeError:“串列”物件沒有屬性“替換”
無論哪種方式,即使我確實讓它作業,這一切似乎都不必要地完成所有這些作業,只是將生成器物件串列轉換為字串以用作 webscrape 的 url,所以我想知道是否有任何替代方案。我知道我的選擇之一是使用 selenium,但我真的不想這樣做,因為我不希望在運行腳本時打開 Chrome 實體的麻煩。
提前致謝
uj5u.com熱心網友回復:
您將回傳一個字串串列串列。要改變這一點,您可以使用這樣的串列推導
results_str = [url for result in results for url in result]
或者,如果您不想使用串列理解,則可以從appendto更改。extendExtend 只是擴展串列,其中 es append 將串列插入串列。
results_str = []
for result in results:
results_str.extend(result)
uj5u.com熱心網友回復:
看起來您可能使用的是不同版本的 googlesearch。我使用的是 googlesearch-python 1.1.0,所以呼叫引數不同。但是,這應該會有所幫助:
from googlesearch import search
list_of_queries = ["Geeksforgeeks", "stackoverflow", "GitHub"]
results = []
for query in list_of_queries:
results.extend([r for r in search(query, 1, 'en')])
print(results)
輸出:
['https://www.youtube.com/c/GeeksforGeeksVideos/videos', 'https://stackoverflow.com/', 'https://stackoverflow.blog/', 'https://github.com/']
如您所見,這是一個簡單的字串串列(在本例中為 URL)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433680.html
