【发布时间】:2021-03-25 12:03:54
【问题描述】:
最近 Craigslist.com 开始 403 阻止以下代码。这似乎与标头或 IP 无关。
import requests
from urllib.request import urlopen, Request
from lxml import etree
url = 'https://sd.craigslist.org/search/sss'
parser = etree.HTMLParser()
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
url_request = Request(url, headers=headers)
webpage = urlopen(url_request,timeout=20).read()
这会输出以下内容:
urllib.error.HTTPError: HTTP Error 403: Forbidden
当我使用 requests 而不是 urlopen 运行类似的块时,它可以正常工作。
import requests
from lxml import html
x=requests.get("https://sd.craigslist.org/search/sss")
tree = html.fromstring(x.content)
print(x.content)
感谢任何帮助。这似乎是一个新问题,因为之前的帖子中提出的解决方案似乎都没有解决。
【问题讨论】:
-
通过代理(例如 Postman)运行两者,看看请求之间有什么区别,一定有一些区别
标签: python web-scraping scrapy urllib