使用请求模块进行网页抓取会卡住而不切割内核 python

时间:2021-04-01 13:51:53

标签: python beautifulsoup python-requests

我正在从 url 列表中抓取内容并使用 bs4requests 模块在 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 错误,它无论如何都应该绕过条件,所以我真的不明白,因为没有错误它只是继续运行?

1 个答案:

答案 0 :(得分:2)

我运行了大约 100 次,没有任何异常。

但有一个注意事项, 这不是像这样检查响应状态代码的pythonic方法

if str(response) == '<Response [200]>':

改用此代码。

if response.status_code == 200:
    # Do staff