我正在尝试从URL刮下桌子。我已经使用请求库一段时间了,还有漂亮的汤,但是我不想冒险使用的是Web驱动程序,因为我以前一直走这条路。
所以我用请求发出请求,然后读取响应。但是我在标题中得到了以下内容,仅此而已。有人可以向我解释我需要做什么(整个上午都花在上面,开始失去情节)?
<head>
<meta charset="utf-8">
<title>SoccerSTATS.com - cookie consent</title>
<style>
.button {
background-color: #4CAF50; /* Green */
border: none;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 18px;
margin: 4px 2px;
cursor: pointer;
}
.button1 {padding: 10px 24px;}
.button2 {padding: 12px 28px;}
.button3 {padding: 14px 40px;}
.button4 {padding: 32px 16px;}
.button5 {padding: 16px;}
</style>
<script type="text/javascript">
function setCookielocal(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
var originpage = "/team.asp?league=england_2018&stats=20-bournemouth";
document.cookie = cname + "=" + cvalue + "; " + expires;
window.location = "//www.soccerstats.com" + originpage;
}
</script>
</head>
答案 0 :(得分:1)
User-Agent请求标头包含一个特征字符串,该特征字符串使网络协议对等方可以识别请求软件用户代理的应用程序类型,操作系统,软件供应商或软件版本。在服务器端验证User-Agent标头是一项常见操作,因此请确保使用有效的浏览器的User-Agent字符串,以避免被阻止。
(来源:http://go-colly.org/articles/scraping_related_http_headers/)
您唯一需要做的就是设置一个合法的用户代理。因此,添加标题以模拟浏览器。 :
# This is a standard user-agent of Chrome browser running on Windows 10
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
示例:
from bs4 import BeautifulSoup
import requests
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
resp = requests.get('http://example.com', headers=headers).text
soup = BeautifulSoup(resp, 'html.parser')
此外,您可以添加另一组标题以伪装成合法的浏览器。添加一些其他标题,如下所示:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'en-US,en;q=0.5',
'Accept-Encoding' : 'gzip',
'DNT' : '1', # Do Not Track Request Header
'Connection' : 'close'
}