我正在尝试抓取一个网站,但我的代码仅在我打开该网站然后刷新它时才有效。我尝试了多种方法,但不断出现以下两个错误: 第一个:ValueError:“HTTPError:HTTP错误416:请求的范围无法满足”
urlslist = open("list_urls.txt").read()
urlslist = urlslist.split("\n")
for urlslist in urlslist:
htmltext = urllib2.urlopen("www..."+ urlslist)
data = json.load(htmltext)
我也尝试过使用一些标头等,但收到错误“ValueError:无法解码 JSON 对象”:
req = urllib2.Request('https://www....)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')
htmltext = urllib2.urlopen(req)
data = json.load(htmltext)
我很困惑,有什么帮助吗?
当您请求网址时,您还需要包含“http(s)://”部分。假设您的文本文件仅包含网址的“name.com”部分(例如,您的文本文件包含 google.com,而不是 https://www.google.com),这就是您需要的代码:
htmltext = urllib2.urlopen("https://www." + urlslist)
如果网址是stubhub.com(正如您在评论中提到的),则不需要“s”。而是这样的:
htmltext = urllib2.urlopen("http://www." + urlslist)
json 错误可能只是由于没有要加载的 json 文件所致。您需要查看开发人员面板并确保引入了 json 格式文件。