Web crawler

0

Witam!
Mam problem z wklejonym niżej kodem. Co mam zrobić, aby zmienna 'href' printowała mi adres URL do obiektu na stronie? Załączam output programu oraz link do strony, z której kodu źródłowego korzystałem. http://books.toscrape.com/catalogue/category/books_1/page-1.html
from bs4 import BeautifulSoup

def web_crawler(max_page):
page = 1
while max_page > page:
url = 'http://books.toscrape.com/catalogue/category/books_1/page-' + str(page) + '.html'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, 'html.parser')
for link in soup.findAll('h3'):
href = 'http://books.toscrape.com' + str(link.get('href='))
title = link.string
print(href)
print(title)
page += 1

web_crawler(2)

1

Cześć,

dzięki za zadanie pytania na forum

ale jeśli dobrej, to odpowiedź na Twoje pytanie brzmi:
wystarczy zamienić link.get('href=') na link.find('a').get('href')

https://ideone.com/fqnu40

Polecam się na przyszłość :)

oto kod jaki stworzyłem, że zreplikować Twój problem

#!/usr/bin/env python3; pip3 install beautifulsoup4
#!/usr/bin/python3
import requests
try:
    from bs4 import BeautifulSoup
except ImportError:
    print('warning: might be using BS3!')
    from BeautifulSoup import BeautifulSoup

def web_crawler(max_page):
    page = 1
    while max_page > page:
        url = 'http://books.toscrape.com/catalogue/category/books_1/page-' + str(page) + '.html'
        source_code = requests.get(url)
        plain_text = source_code # .text => bs3: AttributeError: 'str' object has no attribute 'text', musi byc bs4
        soup = BeautifulSoup(plain_text.content, 'html.parser')
        for link in soup.findAll('h3'):
            print('link', link)
            href = 'http://books.toscrape.com' + str(link.find('a').get('href'))
            title = link.string
            print('HREF', href)
            print('TITLE', title)
        page += 1

web_crawler(2)

na przyszłość używaj proszę markdown z potrójnym akcentem do umieszczania kodu źródłowego

0

W zmiennej href powinien znajdować się adres URL, zaczerpnięty z atrybutu href z kodu źródłowego strony.

1 użytkowników online, w tym zalogowanych: 0, gości: 1