Member 14002680 Ответов: 0

Почему я получаю null возвращается, когда я делаю веб-скребок с xpath


Здравствуйте, я Caixia, пытаюсь захватить некоторую информацию о сделках с жильем с веб-страницы, я сделал это с помощью xpath, некоторая информация успешно удалена, но некоторые нет. Я могу подтвердить, что xpath верен. Моя программа следующая:

из bs4 импортируйте BeautifulSoup в виде супа
импорт заново
запросы на импорт
из селектора импорта parsel
из lxml import etree
импорт панд в качестве ПД
импорт openpyxl
время импорта

# Получить информацию о заголовке браузера Chrome
# 在http请求中设置头部信息,以免被封ip;
заголовки = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/68.0.3440.106 Safari/537.36',
}




finalurl = 'https://sz.lianjia.com/xiaoqu/luohuqu/pg1cro11/'
печать(finalurl)
get_finalurl = requests.get(finalurl, headers = headers).content
finalurl_soup = суп(get_finalurl, 'HTML-код.парсер')
finalurl_ul = finalurl_soup.найти('ул', у attrs={'Class' в: 'элемента listcontent'})
findurl_all = finalurl_ul.find_all('a', attrs={'class': 'img'})

для всех в findurl_all:
re_url = запросы.вам(всем['Солар'])
re_html = re_url.text
re_html_e = etree.В формате HTML(re_html)
информация = { }

#базовая информация xiaoqu
информация['ссылка'] = всего['Солар']
информация['xiaoqu_name'] = re_html_e.в XPath('/HTML-код/кузова/дел[4]/див/див[1]/Н1/текст()')[0]
информация['xiaoqu_address'] = re_html_e.в XPath('/HTML-код/кузова/дел[4]/див/див[1]/див/текст()')[0]
информация['xiaoqu_city'] = re_html_e.в XPath('/HTML-код/кузова/див[5]/див[1]/а[2]/Текст()')[0]
информация['xiqoqu_chengqu'] = re_html_e.в XPath('/HTML-код/кузова/див[5]/див[1]/а[3]/текст()')[0]
информация['xiaoqu_jiedao'] = re_html_e.в XPath('/HTML-код/кузова/див[5]/див[1]/а[4]/текст()')[0]
информация['xiaoqu_price'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[1]/див/Спан[1]/текст()')[0]
информация['xiaoqu_age'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[2]/див[1]/Продолжительность[2]/Текст()')[0]
информация['xiaoqu_buildtype'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[2]/див[2]/пядь[2]/Текст()')[0]
информация['xiaoqu_wuyefei'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[2]/див[3]/пядь[2]/Текст()')[0]
информация['xiaoqu_wuyecompany'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[2]/див[4]/пядь[2]/Текст()')[0]
информация['xiaoqu_developer'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[2]/див[5] и Швейцарии[2]/Текст()')[0]
информация['xiaoqu_building_number'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[2]/див[6]/пядь[2]/Текст()')[0]
информация['xiaoqu_house_number'] = re_html_e.в XPath('/HTML-код/кузова/дел[6]/див[2]/див[2]/див[7]/пядь[2]/Текст()')[0]

#xiaoqu вокруг информации

информация['xiaoqu_jiaotong_subway1_distance'] = re_html_e.в XPath('//*[@идентификатор="mapListContainer"]/ул/ли[1]/див/див[1]/Продолжительность[4]/текст()')
информация['xiaoqu_jiaotong_subway2_distance'] = re_html_e.в XPath('//*[@идентификатор="mapListContainer"]/ул/Ли[2]/див/див[1]/Продолжительность[4]/текст()')
информация['xiaoqu_jiaotong_subway3_distance'] = re_html_e.в XPath('//*[@идентификатор="mapListContainer"]/ул/ли[3]/див/див[1]/Продолжительность[4]/текст()')

печать(информация)


Последние три переменные равны нулю. Почему?

Что я уже пробовал:

я попытался наскрести некоторые основные информационные переменные сообщества, и у меня это получилось. Но последние три переменные равны нулю.

Richard MacCutchan

re_html_e.xpath('/html/body/div[6]/div[2]/div[2]/div[7]/span[2]/text()')[0]
Со всеми этими жестко закодированными значениями индекса это может быть любое из них, которое неверно. Вы должны посмотреть на каждый набор с самого начала и убедиться, что элементы, которые вы ищете, действительно существуют. Не думайте, что данные будут в нужном вам формате.

0 Ответов