Webscraping HTML с Python - PullRequest
       7

Webscraping HTML с Python

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

Извините, если это повторение, но я просматривал множество вопросов StackOverflow по этому вопросу и не могу найти аналогичную ситуацию. Возможно, я здесь лаю не на том дереве, но я новичок в программировании, поэтому, даже если кто-то и поставит меня на правильный путь, это очень поможет.

Я пытаюсь собрать данные с веб-сайта, доступ к которому возможен только из нашей сети, с использованием Python 3.7 и Beautiful soup 4. Мой первый вопрос: это лучший способ сделать это для начинающего программиста или следует Я ищу что-то вроде javascript вместо python?

Мой второй вопрос: в корневом html-файле сайта есть следующий html-тег xmlns = "http://www.w3.org/1999/xhtml". Работает ли BeautifulSoup4 с xhtml?

Я признаю, что ничего не знаю о веб-разработке, поэтому, даже если кто-то может дать мне несколько ключевых слов или советов, чтобы начать исследования, чтобы получить более продуктивный путь, это будет оценено. Сейчас моя самая большая проблема в том, что я не знаю, чего я не знаю, и все примеры написания веб-страниц на python работают на гораздо более простых .html-страницах по сравнению с тем, где дерево веб-страниц состоит из нескольких файлов html / css / jpg и gif.

Спасибо, -Dane

1 Ответ

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

Python, запросы и BeautifulSoup, безусловно, способ, особенно для начинающих. BeautifulSoup работает со всеми вариациями html, xml и т. Д.

Вам нужно будет установить python, а затем установить запросы и bs4. И то, и другое легко сделать, прочитав запросы документов и bs4 документов .

Я бы посоветовал вам немного изучить основы python3, если вы еще не знаете.

Вот небольшой простой пример получения заголовка запрашиваемой страницы:

import requests
from bs4 import BeautifulSoup as bs

url = 'http://some.local.domain/'

response = requests.get(url)
soup = bs(response.text, 'html.parser')

# let's get title of the page
title = soup.title
print(title)

# let's get all the links in the page
links = soup.find_all('a')
for link in links:
    print(link.get('href'))
    link1 = link[0]
    link2 = link[1]

# let's follow a link we find in the page (we'll go for the first)
response = requests.get(link1, stream=True)
# if we have an image and we want to download it 
if response.status_code == 200:
    with open(url.split('/')[-1], 'wb') as f:
        for chunk in response:
            f.write(chunk)

# if the link is another web page
response = requests.get(link2)
soup = bs(response.text, 'html.parser')

# let's get title of the page
title = soup.title
print(title)

Отправляйтесь на охоту за учебниками по запросам, и в BeautfiulSoup их множество ... как этот

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