BeautifulSoup - Cant's Access Webpage - PullRequest
0 голосов
/ 07 мая 2018

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

Я хочу получить доступ к этой правильной странице , но она только возвращает содержимое с этой неправильной страницы .

Вот код, который я запускаю:

import httplib2
from bs4 import SoupStrainer, BeautifulSoup

http = httplib2.Http()
status, response = http.request('https://www.iparkit.com/Minneapolis')

for link in BeautifulSoup(response, 'html.parser', parseOnlyThese=SoupStrainer('a')):
    if link.has_attr('href'):
        print (link['href'])

Результаты:

/account
/monthlyAccount
/myproducts
/search
/
{{Market}}/search?expressSearch=true&timezone={{timezone}}
{{Market}}/search?expressSearch=false&timezone={{timezone}}
{{Market}}/events
monthly?timezone={{timezone}}
/login?next={{ getNextLocation(browserLocation) }}
/account
/monthlyAccount
/myproducts
find
parking-app
iparkit-express
https://interpark.custhelp.com
contact
/
/parking-app
find
https://interpark.custhelp.com
/monthly
/iparkit-express
/partners
/privacy
/terms
/contact
/events

Я не против вернуть вышеуказанные результаты, но он не возвращает никаких ссылок, которые могли бы привести меня на нужную мне страницу. Может быть, это защищено? Любые идеи или предложения, заранее спасибо.

1 Ответ

0 голосов
/ 07 мая 2018

Страница, которую вы пытаетесь очистить, заполнена полностью сгенерированным JavaScript.

В этом случае http.request('https://www.iparkit.com/Minneapolis') почти ничего не даст.

Вместо этого вы должны сделать то, что делает настоящий браузер - обработать JavaScript, затем попытаться очистить то, что было обработано. Для этого вы можете попробовать Selenium.

Для вашей страницы после запуска JavaScript вы получите ~ 84 URL, а при попытке очистки без запуска JavaScript вы получите ~ 7 URL.

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome('PATH_TO_CHROME_WEBDRIVER', chrome_options=chrome_options)
driver.get('https://www.iparkit.com/Minneapolis')

content = driver.page_source

Затем вы извлекаете то, что вы хотите из этого контента , используя BeautifulSoup в вашем случае.

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