Использовать URL, скопированные с веб-страницы с BeautifulSoup - PullRequest
0 голосов
/ 02 сентября 2018

Что касается заголовка, я удалил интересующую меня веб-страницу и сохранил URL-адреса в переменной.

import requests
from bs4 import BeautifulSoup

for pagenumber in range(1, 2):
    url = 'https://www.congress.gov/search?q=%7B%22source%22%3A%22legislation%22%2C%22congress%22%3A%22112%22%7D&page={}'.format(pagenumber)
    res = requests.get(url, headers = {'User-agent': 'Chrome'})

soup = BeautifulSoup(res.text, 'html.parser')
lists = soup.find_all("li", {"class" : "expanded"})

for bill in lists:
    block = bill.find("span", {"class":"result-item"})
    link_cosponsors = block.find_all("a")[1]['href'] # I am interested in the second URL

Последняя строка дает мне список URL. Сейчас я изо всех сил пытаюсь получить доступ к каждому из этих URL-адресов и получить новую информацию от каждого из них.

for url in link_cosponsors:

    soup_cosponsor = BeautifulSoup(requests.get(url).text, 'html.parser')
    table = soup.find('table', {'class':'item_table'})

Я думаю, что проблема связана с тем, как создается link_cosponsors, т.е. первый элемент списка не полный 'https://etc.', а только' h ', потому что я получаю ошибку "Неверный URL-адрес" h " : Схема не указана. Возможно, вы имели в виду http://h?". Я пытался добавить ссылки в список, но это тоже не работает.

1 Ответ

0 голосов
/ 03 сентября 2018

Проблема в том, что вы переназначаете link_cosponsors на каждой итерации цикла for. Таким образом, эта переменная будет содержать только последнюю ссылку, которую вы нашли в виде строки.

Что происходит тогда, это то, что ваш for url in link_cosponsors перебирает эту строку, буква за буквой. В основном так:

for letter in 'http://the.link.you.want/foo/bar':
    print(letter)

Решение: Вы должны заменить последние 3 строки первого фрагмента на:

link_cosponsors = []
for bill in lists:
    block = bill.find("span", {"class":"result-item"})
    link_cosponsors.append(block.find_all("a")[1]['href'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...