Поисковый робот Python — BS4, re(2)

Python

"Это второй день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."

BS4 — Beautiful Soup в основном используется для сбора данных с веб-страниц. Перед использованием BS4 необходимо установить библиотеку на python, которая здесь не будет раскрываться.

1. Используйте BS4 для анализа домашней страницы Nuggets.

Библиотека Beautiful Soup может легко анализировать информацию веб-страницы, она интегрирована в библиотеку bs4 и при необходимости может быть вызвана из библиотеки bs4. Его выражение следующее.

from bs4 import BeautifulSoup
import requests
url = 'https://juejin.cn/'
strhtml = requests.get(url)
print(strhtml.text)

soup = BeautifulSoup(strhtml.text,'lxml')
data = soup.select('#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a')
print(data)

Результат выполнения кода следующий:

image.png

Примечание: Сначала документ HTML будет конвертирован в формат кодировки Unicode, а затем Beautiful Soup выбирает наиболее подходящий парсер для парсинга документа, здесь для парсинга указана библиотека lxml. После синтаксического анализа сложный HTML-документ преобразуется в древовидную структуру, и каждый узел представляет собой объект Python. Здесь проанализированный документ сохраняется во вновь созданном супе переменных, и код выглядит следующим образом.

soup = BeautifulSoup(strhtml.text,'lxml')

Пока что мы получили кусок HTML-кода, но данные не извлечены, далее вводим следующий код в pycharm.

for item in data:
    result = {
        'title':item.get_text(),
        'link':item.get('href')
    }
    print(result)

image.png

2 Регулярные выражения

Обычные символы, которые необходимо использовать, следующие:

  • \d: соответствует цифрам
  • +: соответствует предыдущему символу один или несколько раз

Библиотека re используется при вызове регулярных выражений в Python, эта библиотека не требует установки и может быть вызвана напрямую.

for item in data:
    result = {
        'title':item.get_text(),
        'link':item.get('href')
        'ID':re.findall('\d+',item.get('href'))
    }
    print(result)

Здесь используется метод findall() библиотеки re.Первый параметр представляет собой регулярное выражение, а второй параметр представляет извлекаемый текст.

3 прокси айпи

Сканер имитирует поведение людей при просмотре и посещении и извлекает данные пакетами. Если слишком много данных очищается, это может привести к перегрузке сервера и даже к сбою. Другими словами, серверам не нравится, когда кто-то очищает их собственные данные. Затем веб-сайт примет некоторые стратегии защиты от сканирования для этих поисковых роботов.

Обычно есть два решения.Первое — добавить задержку и захват каждые три секунды.Код выглядит следующим образом:

import time
time.sleep(3)

Другой - создать пул прокси, код выглядит следующим образом:

proxies = {
"http":"http://10.10.1.10:3128",
"http":"http://10.10.1.10:1080",
}
response = requests.get(url,proxies = proxies)

Сегодня буду здесь, а завтра попробуем просканировать комментарии Yiyun!