抓取网站元数据时避免使用本地版本

时间:2019-06-13 08:26:35

标签: python-3.x web-scraping python-requests

我正在收集一些网站元数据。有些网站会根据我的位置提供本地版本,我可以避免这种情况吗?

这是我目前正在做的事情:

import requests
from bs4 import BeautifulSoup

source = requests.get('http://www.youtube.com').text
source_soup = BeautifulSoup(source, 'lxml')
current_description = source_soup.find_all('meta', attrs={'name': 'description'})
print(current_description)

得到的结果是:

[<meta content="Auf YouTube findest du großartige Videos und erstklassige Musik. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder mit der ganzen Welt teilen." name="description"/>]

这是我想要的,但是对于德语版本的网站。我希望使用英文版本,以尽可能避免使用其他语言。由于我想抓取许多不同的网站,因此我几乎无法手动更改URL来强制使用英语或类似语言。

请求模块有解决方案吗?我唯一的其他想法是使用VPN,但这似乎很麻烦。

1 个答案:

答案 0 :(得分:1)

您可以将其添加到headers参数中:

import requests
from bs4 import BeautifulSoup

headers = {'accept-language': 'en-US,en;q=0.9,en-GB;q=0.8'}

source = requests.get('http://www.youtube.com' ,headers=headers).text
source_soup = BeautifulSoup(source, 'lxml')
current_description = source_soup.find_all('meta', attrs={'name': 'description'})
print(current_description)

请注意,如果将其更改为de,我会得到德语。

import requests
from bs4 import BeautifulSoup

headers = {'accept-language': 'de'}

source = requests.get('http://www.youtube.com' ,headers=headers).text
source_soup = BeautifulSoup(source, 'lxml')
current_description = source_soup.find_all('meta', attrs={'name': 'description'})
print(current_description)

输出:

[<meta content="Auf YouTube findest du großartige Videos und erstklassige Musik. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder mit der ganzen Welt teilen." name="description"/>]

fr给了我法语:

import requests
from bs4 import BeautifulSoup

headers = {'accept-language': 'fr'}

source = requests.get('http://www.youtube.com' ,headers=headers).text
source_soup = BeautifulSoup(source, 'lxml')
current_description = source_soup.find_all('meta', attrs={'name': 'description'})
print(current_description)

输出:

[<meta content="Profitez des vidéos et de la musique que vous aimez, mettez en ligne des contenus originaux, et partagez-les avec vos amis, vos proches et le monde entier." name="description"/>]