【问题标题】:How to change language in Request (GET) URL?如何更改请求(GET)URL 中的语言?
【发布时间】:2020-07-16 16:18:43
【问题描述】:

我正在尝试此代码,但仍然无法更改 URL 的语言。

from requests import get
url = 'https://www.fincaraiz.com.co/apartamento-apartaestudio/arriendo/bogota/'
headers = {"Accept-Language": "en-US,en;q=0.5"}
params = dict(lang='en-US,en;q=0.5')
response = get(url, headers = headers, params= params)
print(response.text[:500])
titles = []
for a in html_soup.findAll('div', id = 'divAdverts'):
    for x in html_soup.findAll(class_ = 'h2-grid'):
        title = x.text.replace("\r", "").replace("\n", "").strip()
        titles.append(title)
titles

输出

['Local en Itaguí - Santamaría',
 'Casa en Sopó - Vereda Comuneros',
 'Apartamento en Santa Marta - Bello Horizonte',
 'Apartamento en Funza - Zuame',
 'Casa en Bogotá - Centro Comercial Titán Plaza',
 'Apartamento en Cali - Los Cristales',
 'Apartamento en Itaguí - Suramerica',
 'Casa en Palmira - Barrio Contiguo A Las Flores',
 'Apartamento en Cali - La Hacienda',
 'Casa en Bogotá - Marsella',
 'Casa en Medellín - La Castellana',
 'Casa en Villavicencio - Quintas De San Fernando',
 'Apartamento en Santa Marta - Playa Salguero',
 'Casa Campestre en Rionegro - La Mosquita',
 'Casa Campestre en Jamundí - La Morada',
 'Casa en Envigado - Loma De Las Brujas',
 'Casa Campestre en El Retiro - Los Salados']

有人知道如何更改 URL 的语言吗?什么都试过了

【问题讨论】:

  • 您要将页面更改为哪种语言?页面上是否有更改语言的按钮?
  • 我想是法语,我想要英语。我不认为有任何按钮
  • 它是西班牙语。如果没有任何按钮,您需要自己翻译,也许借助谷歌翻译之类的。
  • 只设置Accept Language Header 根本不会改变语言,它是需要根据Accept Language 翻译内容的服务器,如果服务器没有处理那个头,那么你会得到内容始终以当地语言编写
  • 您必须使用其他第三方库,例如这个https://pypi.org/project/googletrans/

标签: python beautifulsoup get request


【解决方案1】:

我只给出特定字段标题的示例,您可以将其扩展到其他字段,您在使用此库时可能会遇到问题like being blocked by google for number of concurrent request,因为它不是官方的。另外你必须考虑查看文档https://pypi.org/project/googletrans/

中写的注意
from requests import get
from bs4 import BeautifulSoup
from googletrans import Translator

translator = Translator()
url = 'https://www.fincaraiz.com.co/apartamento-apartaestudio/arriendo/bogota/'
headers = {"Accept-Language": "en-US,en;q=0.5"}
params = dict(lang='en-US,en;q=0.5')
response = get(url, headers = headers, params= params)
titles = []
html_soup = BeautifulSoup(response.text, 'html.parser')
for a in html_soup.findAll('div', id = 'divAdverts'):
    for x in html_soup.findAll(class_ = 'h2-grid'):
        title = x.text.replace("\r", "").replace("\n", "").strip()
        titles.append(title)
english_titles=[]
english_translations= translator.translate(titles)
for trans in english_translations:
    english_titles.append(trans.text)

print(english_titles)

由于您正在从西班牙语抓取到英语,您可以在 translator.translate(titles,src="es",dest="en") 中指定参数

【讨论】:

  • 输出仍然是西班牙语 ['Apartamento en Cali - Nueva Tequendama', 'Casa Campestre en Mariquita - Ermita', 'Apartamento en Sabaneta - Asdesilla', 'Casa en Bogotá - San Cristóbal', 'Apartamento en Ibagué - Milla De Oro De Ibagué'、'Apartamento en Armenia - Avenida Centenario'、'Apartamento en Piedecuesta - Bellavista'、'Casa en Manizales - Sector Milán'、'Casa Campestre en Pereira - Cerritos']
  • 什么是result.text?
  • 它的标题抱歉,更新代码时错过了那个
  • 你能帮我从所有页面中提取标题,总共有 632 页。这可以使用,但我不知道如何:'fincaraiz.com.co/apartamento-apartaestudio/arriendo/bogota/… str(page_number) + '||||2||8,22|||67|3630001||||||||||| |||||1|||1||griddate%20desc||||||'
  • 您需要通过 url 迭代发送请求,直到收到失败响应代码。并且您在评论中添加的字符串在您更改页面时会更改编号,因此在每个请求中您需要将此字符串作为查询参数传递,并在每次迭代中更新 page_number
猜你喜欢
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 2011-03-01
  • 2012-07-27
  • 2021-03-05
  • 2015-08-03
  • 2016-11-14
  • 1970-01-01
相关资源
最近更新 更多