Grundlegende Verwendung der Python Crawler BS4-Datenanalyse

Haftungsausschluss: Seit der Veröffentlichung dieses Artikels dient dieser Artikel nur als Referenz und darf nicht reproduziert oder kopiert werden. Wenn die Partei, die diesen Artikel durchsucht, an einem Verstoß gegen nationale Gesetze und Vorschriften beteiligt ist, trägt die Partei, die diesen Artikel durchsucht, alle Konsequenzen und hat nichts mit dem Blogger dieses Artikels zu tun. Und aufgrund des Nachdrucks, Kopierens und anderer Vorgänge der Partei, die diesen Artikel durchsucht, werden alle Streitigkeiten, die durch Verstöße gegen nationale Gesetze und Vorschriften und alle Konsequenzen verursacht werden, von der Partei getragen, die diesen Artikel durchsucht, und haben nichts mit dem Blogger dieses Artikels zu tun.

import requests
from bs4 import BeautifulSoup

1. bs4 Grundsyntax

1.1 HTML-Seite abrufen

Holen Sie sich lokale HTML-Seite

# 读取文件
fp = open("./data/base/taobao.html", "r", encoding="UTF-8")
# 数据加载到该对象中 (本地的 html 文件)
html = BeautifulSoup(fp, "lxml")
print(html)

Lesen Sie die Website, um die HTML-Seite zu erhalten

# 爬取页面
response_text = requests.get(url="https://s.taobao.com/").text
# 数据加载到该对象中 (网络的 html 文件)
html = BeautifulSoup(response_text, "lxml")
print(html)

1.2 Tags abrufen

soup.<tagName>
Die erste gibt standardmäßig None zurück, wenn keine solche Bezeichnung vorhanden ist

print(html.a)
print(html.img)
print(html.input)

Fügen Sie hier eine Bildbeschreibung ein

soup.find(<tagName>)
Entspricht Suppe. <TagName> Standard zuerst

print(html.find("a"))
print(html.find("img"))
print(html.find("input"))

Fügen Sie hier eine Bildbeschreibung ein

soup.find(<tagName>, <tagName.class>)
Die Positionierung von Tag-Attributen, einschließlich <tagName.class>, kann gesucht werden

print(html.find("div", class_="site-nav"))

Fügen Sie hier eine Bildbeschreibung ein

soup.find_all(<tagName>)
Alle Tags, der Rückgabewert ist List

print(html.find_all("a"))
print(html.find_all("input"))

Fügen Sie hier eine Bildbeschreibung ein

soup.select(<select>)
Verwenden Sie die Klassenauswahl, um Tags und alle Tags zu finden. Der Rückgabewert ist List

print(html.select(".bang"))
print(html.select("#J_SearchForm .search-button"))
print(html.select(".copyright"))

Fügen Sie hier eine Bildbeschreibung ein

1.3 Holen Sie sich den Inhalt in das Etikett

text/get_text(): Alle Inhalte
stringabrufen Direkte Inhalte abrufen

print(html.find("div", class_="search-button").text)
print(html.find("div", class_="search-button").string)
print(html.find("div", class_="search-button").get_text())

Fügen Sie hier eine Bildbeschreibung ein

1.4 Holen Sie sich die Attribute in die Beschriftung

[<attribute>]

print(html.a["href"])
print(html.find("div")["class"])
print(html.find_all("div")[5]["class"])

Fügen Sie hier eine Bildbeschreibung ein

2. Beispiele

Artikelinhalt von Three Kingdoms

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import requests
from bs4 import BeautifulSoup


if __name__ == '__main__':

    # url, UA, 参数
    url = "https://www.shicimingju.com/book/sanguoyanyi.html"
    headers = {
    
    
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0"
    }
    # 爬取页面
    html = requests.get(url=url, headers=headers, timeout=5).text
    # 数据加载到该对象中 (网络的 html 文件)
    soup = BeautifulSoup(html, "lxml")
    # 得到想要的标签 (含有章节的)
    content = soup.select("div.book-mulu > ul > li > a")

    # 文件
    fp = open("./data/sgyy/sgyy.txt", "w", encoding="utf-8")
    fp.write("章节\t链接\t内容\n")
    for c in content:
        # 爬取章节详细叙述的内容
        href_text = requests.get(url="https://www.shicimingju.com" + c["href"], headers=headers, timeout=5).text
        # 添加章节详细叙述的内容
        href_soup = BeautifulSoup(href_text, "lxml")
        href_text = href_soup.find("div", class_="chapter_content").text
        # 添加章节的名称, 链接, 内容.
        fp.write(f'{c.text}\t{"https://www.shicimingju.com" + c["href"]}\t{href_text}\n')
        print(c.text + " 添加完成")
    fp.close()

Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/YKenan/article/details/111942335
Empfohlen
Rangfolge