查询HTTP状态码可以看到403是服务器禁止访问,可能原因有:
- User-Agent字段
- 其它情况,可以留言或评论,本文后续补充
User-Agent字段
若用Python做爬虫,默认User-Agent
字段是python urllib/3.3.0
,这样的User-Agent
一般网站都会拒绝访问的。
为了让自己的爬虫更像一个真实用户,我们可以将User-Agent
伪装成一些流行的浏览器,如:Chrome浏览器、火狐浏览器等等。
【tips】那么怎么知道Chrome浏览器的User-Agent
是什么呢?
一方面可以上网搜,另一方面也可以通过Chrome、火狐浏览器的开发者工具查看。
例如笔者Chrome浏览器的User-Agent
是Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
【tips】如何在Python代码中指定User-Agent
呢?
我们可以借助requests
库修改HTTP请求头,下面的代码结合requests
和BeautifulSoup
进行爬虫。
import requests
from bs4 import BeautifulSoup
session = requests.Session()
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit 537.36 (KHTML, like Gecko) Chrome"
}
req = session.get("http://www.xxxxxx.com", headers=headers)
bsObj = BeautifulSoup(req.text)