Изменение языка парсингаPython

Программы на Python
Anonymous
Изменение языка парсинга

Сообщение Anonymous »

Я прохожу курс. Он немного устарел, поэтому кое-что на веб-сайте изменилось
https://www.centris.ca/
По сути, это веб-сайт по недвижимости, вам нужно позвонить на 2 конечные точки, чтобы получить результат со свойствами.
Вызов 1: https://www.centris.ca/property/UpdateQuery
Вызов 2: https:/ /www.centris.ca/Property/GetInscriptions
К сожалению, я не могу понять, как не вернуть ответ на французском языке. Что я пробовал:
заголовки: 'Accept-Language': 'en-US,en;q=0.6'
Файлы cookie: ничего, что указывает язык
Паук:

Код: Выделить всё

import scrapy
from scrapy.selector import Selector
import json

class ListingsSpider(scrapy.Spider):
name = "listings"
allowed_domains = ["www.centris.ca"]

position = {
"startPosition": 0
}

def start_requests(self):
query = {
"query":{
"UseGeographyShapes":0,
"Filters":[

],
"FieldsValues":[
{
"fieldId":"Category",
"value":"Commercial",
"fieldConditionId":"",
"valueConditionId":""
},
{
"fieldId":"SellingType",
"value":"Rent",
"fieldConditionId":"",
"valueConditionId":""
},
{
"fieldId":"RentPrice",
"value":0,
"fieldConditionId":"ForRent",
"valueConditionId":""
},
{
"fieldId":"RentPrice",
"value":999999999999,
"fieldConditionId":"ForRent",
"valueConditionId":""
}
]
},
"isHomePage": True
}
yield scrapy.Request(
url="https://www.centris.ca/property/UpdateQuery",
method="POST",
body=json.dumps(query),
headers={
'Content-Type': 'application/json',
'Content-Language': 'en'
},
callback=self.update_query
)

def update_query(self, response):
yield scrapy.Request(
url="https://www.centris.ca/Property/GetInscriptions",
method="POST",
body=json.dumps(self.position),
headers={
'Content-Type': 'application/json',
'accept-language': 'en-US,en;q=0.6',
'referer': 'https://www.centris.ca/en/properties~for-rent?view=Thumbnail',
'cache-control': 'no-cache'
},
cookies={'currency': 'USD', 'country': 'UY'},
callback=self.parse
)

def parse(self, response):
resp_dict = json.loads(response.body)
html = resp_dict.get('d').get('Result').get('html')
sel = Selector(text=html)
listings = sel.xpath("//div[@class='property-thumbnail-item thumbnailItem col-12 col-sm-6 col-md-4 col-lg-3']")
for listing in listings:
print("not yet implemented")
Изменить: я считываю API, а не сам веб-сайт.

Подробнее здесь: https://stackoverflow.com/questions/786 ... age-change

Вернуться в «Python»