Che*_*ara 3 python web-scraping
我正在使用请求和bs4从一个也有英文版本的中文网站上搜集一些数据.我写这个是为了看看我是否得到了正确的数据:
import requests
from bs4 import BeautifulSoup
page = requests.get('http://dotamax.com/hero/rate/')
soup = BeautifulSoup(page.content, "lxml")
for i in soup.find_all('span'):
print i.text
Run Code Online (Sandbox Code Playgroud)
而且我这样做,唯一的问题是文本是中文的,但是当我查看页面源时它是英文的.为什么我会用中文而不是英文.如何解决?
n1c*_*1c9 11
该网站似乎检查GET请求Accept-Language参数.如果请求没有,则显示中文版.但是,这是一个简单的修复 - 请求文档中描述的使用标头:
import requests
from bs4 import BeautifulSoup
headers = {'Accept-Language': 'en-US,en;q=0.8'}
page = requests.get('http://dotamax.com/hero/rate/', headers=headers)
soup = BeautifulSoup(page.content, "lxml")
for i in soup.find_all('span'):
print i.text
Run Code Online (Sandbox Code Playgroud)
生产:
Anti-Mage
Axe
Bane
Bloodseeker
Crystal Maiden
Drow Ranger
...
Run Code Online (Sandbox Code Playgroud)
等等
通常,当您的浏览器和请求内容中的请求显示不同时,它与您正在使用的请求和标头类型有关.我希望我之前已经意识到的一个非常有用的网页抓取技巧是,如果你去Chrome或Firefox上的网络标签,你可以获得许多可用于调试的有用信息:
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |