Извлечь ссылку с веб-страницы, используя Python - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть проблема: я хочу извлечь URL каждого отдельного проекта с этой страницы, но я не знаю, как это сделать. Я пытался извлечь его через

projects = main_page.find_all_next('div', attrs={'class':'relative self-start'})

но я не получаю ссылку. Как я могу пройти через это? Заранее благодарю за помощь.

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

ссылка, сгенерированная javascript, вы не можете получить ее с BeutifulSoup, используйте Regex для захвата URL в переменной javascript

import requests
import re

html = requests.get('https://www.kickstarter.com/discover/categories/music').text
listURL = re.findall(r'"project":"([^"]+)', html)
for url in listURL:
    print url
0 голосов
/ 09 ноября 2018

Этот сайт динамически загружает контент. Так что вам нужно что-то, что может запускать JavaScript. Существует простой пример доступа к сайту с селеном.

from selenium import webdriver
from bs4 import BeautifulSoup

url = "https://www.kickstarter.com/discover/categories/music"

dr = webdriver.Chrome() # or PhantomJS,Firefox
try:
    dr.get(url)
    main_page = BeautifulSoup(dr.page_source,"lxml")
    projects = main_page.find_all('div', {'class':'relative self-start'})
    project_showed = main_page.find_all("div",class_="bg-white black relative border-grey-500 border")
    print(len(projects))
except Exception as e:
    raise e

finally:
    dr.close()

Но если вы не можете загрузить данные вовремя, вы должны использовать WebDriverWait или Implicit, чтобы дождаться окончания загрузки. WebDriverWait и Implicit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...