Современный скрапинг веб-сайтов с помощью Python. 2-е межд. издание
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

 Современный скрапинг веб-сайтов с помощью Python. 2-е межд. издание

Если программирование напоминает волшебство, то веб-скрапинг — это очень сильное колдунство. Написав простую автоматизированную программу, можно отправлять запросы на веб-серверы, запрашивать с них данные, а затем анализировать их и извлекать необходимую информацию. Новое расширенное издание книги знакомит не только с веб-скрапингом, но и поможет собрать любого вида данные в современном Интернете.
В части I основное внимание уделено механике веб-скрапинга: как с помощью Python запрашивать информацию с веб-сервера, производить базовую обработку серверного отклика и организовать автоматизированное взаимодействие с сайтами. В части II исследованы более специфичные инструменты и приложения, которые пригодятся при любом сценарии веб-скрапинга.
- Разбирайте сложные HTML-страницы.
- Разрабатывайте поисковые роботы с помощью фреймворка Scrapy.
- Изучайте методы хранения данных, полученных с помощью скрапинга.
- Считывайте и извлекайте данные из документов.
- Очищайте и нормализуйте плохо отформатированные данные.
- Читайте и пишите информацию на естественных языках.
- Освойте поиск по формам и логинам.
- Изучите скрапинг JavaScript и работу с API.
- Используйте и пишите программы для преобразования изображений в текст.
- Учитесь обходить скрапинговые ловушки и блокаторы ботов.
- Протестируйте собственный сайт с помощью скрапинга.
Оқыдыңыз ба? Не айтасыз?
else:

internalLinks.append(link.attrs['href'])

return internalLinks

# Получить список всех внешних ссылок, найденных на странице.

def getExternalLinks(bs, excludeUrl):

externalLinks = []

# Найти все ссылки, которые начинаются с "http" или "www",

# не содержащие текущий URL.

for link in bs.find_all('a',

href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):

if link.attrs['href'] is not None:

if link.attrs['href'] not in externalLinks:

externalLinks.append(link.attrs['href'])

return externalLinks

def getRandomExternalLink(startingPage):

html = urlopen(startingPage)

bs = BeautifulSoup(html, 'html.parser')

externalLinks = getExternalLinks(bs,

urlparse(startingPage).netloc)

if len(externalLinks) == 0:

print('No external links, looking around the site for one')

domain = '{}://{}'.format(urlparse(startingPage).scheme,

urlparse(startingPage).netloc)

internalLinks = getInternalLinks(bs, domain)

return getRandomExternalLink(internalLinks[random.randint(0,

len(internalLinks)-1)])

else:

return externalLinks[random.randint(0, len(externalLinks)-1)]

def followExternalOnly(startingSite):

externalLink = getRandomExternalLink(startingSite)

print('Random external link is: {}'.format(externalLink))

followExternalOnly(externalLink)

followExternalOnly('http://oreilly.com')
Комментарий жазу
from urllib.request import urlopen

from urllib.parse import urlparse

from bs4 import BeautifulSoup

import re

import datetime

import random

pages = set()

random.seed(datetime.datetime.now())

# Получить список всех внутренних ссылок, найденных на странице.

def getInternalLinks(bs, includeUrl):

includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme,

urlparse(includeUrl).netloc)

internalLinks = []

# найти все ссылки, которые начинаются с "/"

for link in bs.find_all('a',

href=re.compile('^(/|.*'+includeUrl+')')):

if link.attrs['href'] is not None:

if link.attrs['href'] not in internalLinks:

if(link.attrs['href'].startswith('/')):

internalLinks.append(

includeUrl+link.attrs['href'])
Комментарий жазу
Принимая решение о том, какие данные собирать, зачастую лучше игнорировать сайты. Нельзя запустить проект, рассчитанный на то, чтобы стать большим и масштабируемым, посмотрев только на один сайт и спросив себя: «Что здесь есть?» Вместо этого нужно задать другой вопрос: «Что мне нужно?» — а затем найти способы поиска необходимой информации.
Комментарий жазу
Питер
Издательский дом «Питер»
Издательский дом «Питер»
1 829 кітап
808
Айтишная полка
undlake
undlake
277 кітап
760
Издательство O'Reilly
Александр Сидоренко
Александр Сидоренко
58 кітап
60
Программирование
Алексей Ермаков
Алексей Ермаков
100 кітап
39
Python/Excel (and other it book)
Эдуард С.
Эдуард С.
148 кітап
38