将 fake_useragent 添加到 people_also_ask 模块
adding fake_useragent to people_also_ask module
我要刮google'people also ask questions/answer'。我正在使用以下模块成功完成。
pip install people_also_ask
问题是图书馆的配置使得没有人可以向 google 发送很多请求。我想每天发送 1000 个请求,为此我必须将 fake_useragent 添加到模块中。我尝试了很多,但是当我尝试将虚假用户代理添加到 header 时,它会出错。我不是专业人士,所以我一定是自己做错了。谁能帮我把 fake_useragent 添加到模块(people_also_ask)。这是获取 question/answer.
的工作代码from encodings import utf_8
import people_also_ask as paa
from fake_useragent import UserAgent
ua = UserAgent()
while True:
input("Please make sure the queries are in \query.txt file.\npress Enter to continue...")
try:
query_file = open("query.txt","r")
queries = query_file.readlines()
query_file.close()
break
except:
print("Error with the query.txt file...")
for query in queries:
res_file = open("result.csv","a",encoding="utf_8")
try:
query = query.replace("\n","")
except:
pass
print(f'Searching for "{query}"')
questions = paa.get_related_questions(query, 14)
questions.insert(0,query)
print("\n________________________\n")
main_q = True
for i in questions:
i = i.split('?')[0]
try:
answer = str(paa.get_answer(i)['response'])
if answer[-1].isdigit():
answer = answer[:-11]
print(f"Question:{i}?")
except Exception as e:
print(e)
print(f"Answer:{answer}")
if main_q:
a = ""
b = ""
main_q = False
else:
a = "<h2>"
b = "</h2>"
res_file.writelines(str(f'{a}{i}?{b},"<p>{answer}</p>",'))
print("______________________")
print("______________________")
res_file.writelines("\n")
res_file.close()
print("\nSearch Complete.")
input("Press any key to Exit!")
这违反了 Google 的服务条款,也违反了 people_also_ask
软件包的意愿。此答案仅供教育之用。
您问为什么 fake_useragent
无法工作。它并没有被阻止工作,但是 people_also_ask
包只是没有实现任何调用来使用任何 fake_useragent
方法。您不能只导入一个包并期望另一个包开始使用它。您必须手动使包一起工作。
要做到这一点,您必须了解这 2 个包的工作原理。看看 the source code,你会发现你可以很容易地让它们协同工作。在请求任何数据之前,只需将 people_also_ask
中的常量 header 替换为 fake_useragent
生成的常量。
paa.google.HEADERS = {'User-Agent': ua.random} # replace the HEADER with a randomised HEADER from fake_useragent
questions = paa.get_related_questions(query, 14)
和
paa.google.HEADERS = {'User-Agent': ua.random} # replace the HEADER with a randomised HEADER from fake_useragent
answer = str(paa.get_answer(i)['response'])
注意:
并非所有用户代理都可以工作。 Google 根据用户代理不给出相关问题。这不是 fake_useragent
或 people_also_ask package
.
为了稍微缓解这个问题,请确保调用 ua.update()
并且您也可以使用 fake_useragents
的 PR #122 来仅 select 最新的子集更有可能工作的用户代理,尽管您仍然会错过一些查询。 people_also_ask 软件包没有绕过或 work-around 来自 google