我正在从 url 列表中抓取内容并使用 bs4
和 requests
模块在 python 中打印文本。问题是抓取总是卡在一个随机的 url 上而没有剪切。
此外,当我使用 ctrl c
手动剪切时,它无法正确剪切,因为我似乎无法运行任何其他代码,就好像后台正在发生某些事情一样。
在我抓取之前,我检查了响应代码是 200 并且代码看起来是这样(这是这次似乎卡住的网址):
url = 'https://www.businessinsider.in/business/ecommerce/news/amazon-is-eyeing-india-startups-as-it-gears-up-for-a-fight-with-asia-richest-man-in-retail/articleshow/81773692.cms?utm_campaign=cityfalcon&utm_medium=cityfalcon&utm_source=cityfalcon'
response = requests.get(url)
if str(response) == '<Response [200]>':
report = BeautifulSoup(response.content, 'lxml').text
print(report)
requests 模块有一定的使用次数吗?没有人知道我如何开始调试这样的问题而不会出现任何错误吗?
需要任何进一步说明或需要代码,请告诉我。
编辑
使用不同的网址再次发生这种情况。 url= https://www.investing.com/news/stephens-stick-to-their-buy-rating-for-tyson-foods-2470535?utm_campaign=cityfalcon&utm_medium=cityfalcon&utm_source=cityfalcon
的响应代码是<Response [403]>
它也卡在了这个上面:
<Response [200]>
https://www.benzinga.com/analyst-ratings/analyst-color/21/04/20568999/analysts-upgraded-amc-snap-united-airlines-and-tesla-in-the-past-week'
再一次,它不会让我中断并继续工作。对于 403 错误,它无论如何都应该绕过条件,所以我真的不明白,因为没有错误它只是继续运行?
答案 0 :(得分:2)
我运行了大约 100 次,没有任何异常。
但有一个注意事项, 这不是像这样检查响应状态代码的pythonic方法
if str(response) == '<Response [200]>':
改用此代码。
if response.status_code == 200:
# Do staff