使用python(Beautifulsoup)进行网页抓取

使用python(Beautifulsoup)进行网页抓取,python,web-scraping,beautifulsoup,python-requests,Python,Web Scraping,Beautifulsoup,Python Requests,我刚刚开始学习使用pythonBeautifulsoup和请求库以及使用Pycharm工具进行web抓取 导入请求 从bs4导入BeautifulSoup result1=请求。获取(“https://www.grainger.com/") 打印('result1为'+str(result1.状态\代码)) 当我使用这个网站时,它会不断加载,如果我使用google.com它会给出输出 我想知道为什么我没有得到上述网站的输出?嗯。。。有几件事 该网站可能不存在 您正在使用http而不是https

我刚刚开始学习使用python
Beautifulsoup
和请求库以及使用Pycharm工具进行web抓取

导入请求
从bs4导入BeautifulSoup
result1=请求。获取(“https://www.grainger.com/")
打印('result1为'+str(result1.状态\代码))
当我使用这个网站时,它会不断加载,如果我使用
google.com
它会给出输出


我想知道为什么我没有得到上述网站的输出?

嗯。。。有几件事

  • 该网站可能不存在
  • 您正在使用http而不是https
  • 该站点阻止抓取(发送用户代理标头)
  • 这可能是请求的问题。尝试使用其他库

  • 要从此站点获取状态
    200
    ,请指定
    User-Agent
    HTTP头:

    import requests
    from bs4 import BeautifulSoup
    
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0'}
    
    result1 = requests.get("https://www.grainger.com/", headers=headers)
    
    print('result1 is '+ str(result1.status_code))
    
    印刷品:

    result1 is 200
    
    这样做之所以有效,是因为有些网站会忽略那些似乎不是从web浏览器发出的请求。默认情况下,使用
    用户代理
    python请求
    ,因此网站可以告诉您不是从web浏览器请求网站。您的请求挂起并最终超时的原因可能是因为他们的服务器忽略了您的请求