【问题标题】:Web Scraping using python(Beautifulsoup)使用python进行网页抓取(Beautifulsoup)
【发布时间】:2021-01-31 06:19:51
【问题描述】:
我刚刚开始学习使用 python Beautifulsoup 和请求库以及使用 Pycharm 工具进行网络抓取。
import requests
from bs4 import BeautifulSoup
result1 = requests.get("https://www.grainger.com/")
print('result1 is '+ str(result1.status_code))
当我使用这个网站时,它会继续加载,如果我使用google.com,它会给出输出。
我想知道为什么我没有得到上述网站的输出?
【问题讨论】:
标签:
python
web-scraping
beautifulsoup
python-requests
【解决方案1】:
要从此站点获取状态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
之所以可行,是因为某些网站会忽略似乎不是来自网络浏览器的请求。默认情况下,requests 使用 User-Agent python-requests,因此网站可以告诉您不是从网络浏览器请求网站。您的请求挂起并最终超时的原因可能是因为他们的服务器忽略了您的请求。
【解决方案2】:
嗯...有几件事。
- 该网站可能不存在
- 您使用的是 http 而不是 https
- 该网站阻止抓取(发送用户代理标头)
- 这可能是请求的问题。尝试使用其他库。