Как я могу извлечь все URL / ссылки динамической веб-страницы с помощью Python. Мне нужно это, чтобы проверить наличие неработающей ссылки для разных веб-страниц - PullRequest
0 голосов
/ 19 сентября 2019

необходимо извлечь все ссылки (ссылка на изображение, адрес электронной почты, URL) динамической веб-страницы в python

Я пробовал модуль Python "запросы", но он работает только со статическими веб-страницами.

def get_html(url):
    from selenium import webdriver
    driver = webdriver.PhantomJS()
    driver.get(url)
    html = driver.page_source
    return html

soup = BeautifulSoup(get_html(url),features="html.parser")
for anchor in soup.find_all("a"):
    link = anchor.attrs["href"]
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
    resp = requests.get(link,headers=headers, timeout=(2, 10))
    if resp.status_code in (400,404,403,408,409,501,502,503):
        isBroken = True

1 Ответ

0 голосов
/ 19 сентября 2019

Возможно использовать запросы и lxml

Используйте запросы для загрузки содержимого URL-адреса и используйте lxml для анализа содержимого по URL-адресам.

code:

import requests
from lxml import html
from lxml import etree

r = requests.get('http://www.asciitable.com')

doc = etree.HTML(r.content)
for url in doc.xpath('//a[@href]'):
    print url.get('href')
    print requests.get(url.get('href'))
print r

output:

http://www.asciitable.com/
<Response [200]>
http://www.lookuptables.com/ebcdic_scancodes.php
<Response [406]>
http://www.lookuptables.com/
<Response [406]>
http://www.lookuptables.com/phoneticalphabet.php
<Response [406]>
http://www.unicodetables.com/
<Response [406]>
http://www.DialingCode.com/
<Response [200]>
http://www.Fezy.com/
<Response [406]>
https://www.ezoic.com/what-is-ezoic/
<Response [403]>
http://www.allconversions.com
<Response [406]>
http://link2me.com
<Response [406]>
http://www.perfume-click.co.uk/
<Response [200]>
http://www.asciitable.com/privacy/
<Response [200]>
<Response [200]>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...