gpt4 book ai didi

python - 如何使用 Python 3.7.4 和 beautifulsoup4 抓取 Cyber​​ix3D 网站 (http ://www. 3dgamemaker.com) 上游戏的所有 URL 链接?

转载 作者:太空宇宙 更新时间:2023-11-04 04:01:53 25 4
gpt4 key购买 nike

我正在尝试调整 https://stackoverflow.com/a/46135607/9637147 中的代码抓取 Cyber​​ix3D 网站上游戏的所有 URL 链接。但是当我运行我的代码时它没有这样做,给我一个 403 Forbidden 错误。如何修复我的代码?

这样我就可以更快地将 Cyber​​ix3D 网站上的所有游戏存档到 Wayback Machine (http://web.archive.org/) 上。我尝试在第一行之前添加行 useragent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) Gecko/20170101 Firefox/67.0".encode("utf-8") for 循环,然后将 html=urlopen(url) 替换为 html=urlopen(url,useragent) 以允许代码使用该用户代理,但即便如此,我仍然收到 403 Forbidden 错误。

from urllib.request import urlopen
from bs4 import BeautifulSoup
file="Cyberix3D games.csv"
f=open(file,"w")
Headers="Link\n"
f.write(Headers)
for page in range(1,410):
url="http://www.gamemaker3d.com/games#page={}&orderBy=Recent".format(page)
html=urlopen(url)
soup=BeautifulSoup(html,"html.parser")
Title=soup.find_all("a",{"href":"views-field-nothing"})
for i in Title:
try:
link=i.find("a",{"href":"/player?pid="}).get_text()
print(link)
f.write("{}".format(link))
except:AttributeError
f.close()

我希望上述链接能够在 Python 3.7.4 Shell 中打印,并添加到名为 Cyber​​ix3D games.csv 的 CSV 文件中,但我得到了 urllib.error.HTTPError: HTTP Error 403: Forbidden,在一堆 File "C:\Users\Niall Ward\AppData\Local\Programs\Python\Python37-32\lib\urllib\request.py"之后,第 x 行,在 y 中s,在 Python 3.7.4 Shell 中,以及一个名为 Cyber​​ix3D games.csv 的空 CSV 文件。

最佳答案

一些网站会阻止不是来自浏览器的连接 - 反机器人、垃圾邮件等。有许多不同的解决方案可以工作:emulating a browser比方说,代理一个合法的回应;你可以add a header根据您的要求;等

运行你的代码后,我尝试了一个比我上面提到的更简单的解决方案:我没有使用 from urllib.request import urlopen 我使用了 import requests 并且这样做我不得不改变

# Start by importing requests
import requests
from bs4 import BeautifulSoup
file="Cyberix3D games.csv"
f=open(file,"w")
Headers="Link\n"
f.write(Headers)
for page in range(1,410):
url="http://www.gamemaker3d.com/games#page={}&orderBy=Recent".format(page)
print(url)
# Here we use requests to get the page and its content.
# Note that variables names don't really matter here.
gamemaker_link=requests.get(url)
# Used gamemnaker_link.contetnt and lxml as my parser.
gamemaker_content=BeautifulSoup(gamemaker_link.content, "lxml")

# etc etc etc

要求

如果没有,则需要安装(我使用的是 pip):

  1. 要求
  2. lxml

注意事项

我不确定处理页面元素是否有任何变化,但这至少应该有助于访问页面。

希望对您有所帮助。

编码愉快!

关于python - 如何使用 Python 3.7.4 和 beautifulsoup4 抓取 Cyber​​ix3D 网站 (http ://www. 3dgamemaker.com) 上游戏的所有 URL 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58128206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com