"Это второй день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 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)
Результат выполнения кода следующий:
Примечание: Сначала документ 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)
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!