Соскоб в Интернете: невозможно зациклить элемент div с классом, чтобы получить текст и URL - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь очистить веб-сайт, на котором я использую div и class, чтобы получить содержимое внутри него.

Я могу получить правильные данные, но получаю ошибку, когда помещаю их внутрьцикл.

html = BeautifulSoup(response, 'html.parser')
post_list = html.find_all('div', class_='eodLhs')
print(post_list)
i = 0

for values in post_list:
     url_json = {'title': values.ul.li[i].a.text, 'url': values.ul.li[i].a['href']}
     names.append(values.ul.li[i].a.text)
i = i+1

Выходные данные оператора печати: https://gist.github.com/parikhparth23/48669444506502f11409d43b30a4250d

В этой строке выдается ошибка:

url_json = {'title': values.ul.li[i].a.text, 'url': values.ul.li[i].a['href']}

Я хочу получить тексти URL после очистки.

1 Ответ

1 голос
/ 26 октября 2019

Исходя из вашей сути, я думаю, что вы можете просто использовать css-селектор, который гарантирует, что у вас есть дочерние hrefs в этом родительском классе. В вашем существующем коде приращение i должно происходить в цикле, но не требуется, если вы переписываете, как я описываю. Используйте оператор «начинается с» для значения атрибута, чтобы удалить общие ссылки, так как я подозреваю, что вам нужны только исходные ссылки на контент

for i in soup.select(".eodLhs [href^='/']"):
    print({i.text:i['href']})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...