ahm*_*234 -1 python user-agent beautifulsoup web-scraping pythonanywhere
在我的项目中,我从亚马逊抓取数据。我将其部署在 Pythonanywhere 上(我使用付费帐户)。但是有一个问题,当我在 Pythonanywhere 上尝试时,代码(我使用的是 BeautifulSoup4)无法获取网站的 html。它获得了亚马逊的“出问题了”网站。但在我本地它工作得很好。我认为它与用户代理有关。在我的本地,我使用我自己的用户代理。部署时我应该使用哪个用户代理?我该如何解决这个问题?
这是我的代码:
URL = link ##some amazon link
headers = {"User-Agent": " ##my user agent"}
page = requests.get(URL, headers=headers)
soup1 = BeautifulSoup(page.content, 'html.parser')
soup2 = BeautifulSoup(soup1.prettify(), "html.parser")
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在 Pythonanywhere 上做到这一点吗?
小智 5
您的代码在我的家用机器上完美运行,因此问题可能是:
为了解决前者,您可能需要尝试代理连接来更改您访问 Amazon 的 IP(我建议您检查 PythonAnywhere 和 Amazon 的服务条款以了解任何风险)。用法看起来像这样:
import requests
proxies = {
"http": "http://IP:Port", # HTTP
"https": "https://IP:Port", # HTTPS
'http': 'socks5://user:pass@IP:Port' # SOCKS5
}
URL = "https://api4.my-ip.io/ip" # Plaintext IPv4 to test
page = requests.get(URL, proxies=proxies)
print(page.text)
Run Code Online (Sandbox Code Playgroud)
寻找可用的代理需要进行几次谷歌搜索,但困难的部分是偶尔更换它们,因为它们不会永远持续下去。