我正在尝试从下面的一段代码中实现逻辑,该代码使用 aiohttp 向谷歌搜索发出请求,我的解决方案似乎是等效的,但由于某种原因没有按需要设置 cookie。有什么帮助吗?
from http.cookiejar import LWPCookieJar
from urllib.request import Request, urlopen
USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)'
cookie_jar = LWPCookieJar(os.path.join(home_folder, '.google-cookie'))
cookie_jar.load()
def get_page(url, user_agent=None, verify_ssl=True):
if user_agent is None:
user_agent = USER_AGENT
request = Request(url)
request.add_header('User-Agent', user_agent)
cookie_jar.add_cookie_header(request)
response = urlopen(request)
cookie_jar.extract_cookies(response, request)
html = response.read()
response.close()
try:
cookie_jar.save()
except Exception:
pass
return html
我的解决方案:
import aiohttp
USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)'
abs_cookie_jar = aiohttp.CookieJar()
abs_cookie_jar.load('.aiogoogle-cookie')
async def get_page(url, user_agent=None, verify_ssl=True):
if user_agent is None:
user_agent = USER_AGENT
async with aiohttp.ClientSession(headers={'User-Agent': user_agent}, cookie_jar=abs_cookie_jar) as session:
response = await session.get(url)
if response.cookies:
abs_cookie_jar.update_cookies(cookies=response.cookies)
abs_cookie_jar.save('.aiogoogle-cookie')
html = await response.text()
return html