Hướng dẫn how do i pull html data from python? - làm cách nào để lấy dữ liệu html từ python?

Vì vậy, td.text trông như thế này:

some linksome data 1some data 2some data 3

Bạn có thể thấy rằng mỗi chuỗi được phân tách bởi ít nhất một dòng mới, do đó cho phép bạn tách ra từng chuỗi.

from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3

Hoặc chính xác hơn:

for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3

Nhưng giải pháp đó là giòn vì nó sẽ không hoạt động nếu HTML của bạn trông như thế này:

Bây giờ td.text trông như thế này:

some linksome data 1some data2some data3

Và không có cách nào để tìm ra nơi một số chuỗi bắt đầu và kết thúc. Nhưng điều đó chỉ có nghĩa là bạn không thể sử dụng td.text-vẫn còn những cách khác để xác định từng chuỗi:

1)

from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: a_tags = td.find_all('a') for a_tag in a_tags: csv_data.append(a_tag.text) br_tags = a_tag.findNextSiblings('br') for br in br_tags: csv_data.append(br.next.strip()) #get the element after the
tag csv_str = ",".join(csv_data) print(csv_str) --output:-- some link,some data 1,some data 2,some data 3

2)

for td in tds:
    a_tag = td.find('a')
    if a_tag: csv_data.append(a_tag.text)

    for string in a_tag.findNextSiblings(text=True):  #find only text nodes
        string = string.strip()
        if string: csv_data.append(string)

csv_str = ",".join(csv_data)
print(csv_str)

--output:--
some link,some data 1,some data 2,some data 3

3)

for td in tds:
    a_tag = td.find('a')
    if a_tag: csv_data.append(a_tag.text)

    text_strings = a_tag.findNextSiblings( text=re.compile('\S+') )  #find only non-whitespace text nodes
    csv_data.extend(text_strings)

csv_str = ",".join(csv_data)
print(csv_str)

--output:--
some link,some data 1,some data 2,some data 3

Mô -đun đẹp trong Python cho phép chúng tôi xóa dữ liệu từ các tệp HTML cục bộ. Vì một số lý do, các trang trang web có thể được lưu trữ trong một địa phương (môi trường ngoại tuyến) và bất cứ khi nào cần, có thể có các yêu cầu để lấy dữ liệu từ chúng. Đôi khi cũng có thể nhận được dữ liệu từ nhiều tệp HTML được lưu trữ cục bộ. Thông thường các tệp HTML có các thẻ như,, các thẻ, v.v., sử dụng đẹp, chúng ta có thể loại bỏ nội dung và nhận các chi tiết cần thiết. & NBSP;module in Python allows us to scrape data from local HTML files. For some reason, website pages might get stored in a local (offline environment), and whenever in need, there may be requirements to get the data from them. Sometimes there may be a need to get data from multiple Locally stored HTML files too. Usually HTML files got the tags like

, ,…, tags etc., Using BeautifulSoup, we can scrap the contents and get the necessary details. Cài đặt

Nó có thể được cài đặt bằng cách nhập lệnh dưới đây vào thiết bị đầu cuối.

pip install beautifulsoup4

Bắt đầu

Nếu có một tệp HTML được lưu trữ ở một vị trí và chúng ta cần loại bỏ nội dung thông qua Python bằng cách sử dụng đẹp, LXML là một API tuyệt vời vì nó có nghĩa là để phân tích XML và HTML. Nó hỗ trợ cả phân tích cú pháp một bước và phân tích cú pháp từng bước. & Nbsp; lxml is a great API as it meant for parsing XML and HTML. It supports both one-step parsing and step-by-step parsing. 

Hàm preptify () trong BeautifulSoup giúp xem bản chất thẻ và việc làm tổ của chúng. & Nbsp;Prettify() function in BeautifulSoup helps to view the tag nature and their nesting. 

Ví dụ: Hãy để tạo ra một tệp HTML mẫu.Let’s create a sample HTML file.

Python3

some linksome data 1some data 2some data 3
0
some linksome data 1some data 2some data 3
1

some linksome data 1some data 2some data 3
0
some linksome data 1some data 2some data 3
3

some linksome data 1some data 2some data 3
4
some linksome data 1some data 2some data 3
5
some linksome data 1some data 2some data 3
6

some linksome data 1some data 2some data 3
7
some linksome data 1some data 2some data 3
8
some linksome data 1some data 2some data 3
5
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 0

from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 1
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 2
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 3
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 4
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 5
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 6
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 7

some linksome data 1some data 2some data 3
7
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 9
some linksome data 1some data 2some data 3
5
for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
1

some linksome data 1some data 2some data 3
7
for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
3
for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
4

some linksome data 1some data 2some data 3
7
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 9
some linksome data 1some data 2some data 3
5
for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
8

Output:

Hướng dẫn how do i pull html data from python? - làm cách nào để lấy dữ liệu html từ python?

Bây giờ, hãy sử dụng phương thức Premtify () để xem các thẻ và nội dung theo cách dễ dàng hơn.

Python3

for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
9
0
some linksome data 1some data 2some data 3
0
2

3
some linksome data 1some data 2some data 3
5
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 2
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 3
7
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 5
9
some linksome data 1some data2some data3
0

some linksome data 1some data2some data3
1
some linksome data 1some data 2some data 3
5
some linksome data 1some data2some data3
3

some linksome data 1some data2some data3
4
some linksome data 1some data 2some data 3
5
some linksome data 1some data2some data3
6
some linksome data 1some data2some data3
7
some linksome data 1some data2some data3
0

for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
3
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: a_tags = td.find_all('a') for a_tag in a_tags: csv_data.append(a_tag.text) br_tags = a_tag.findNextSiblings('br') for br in br_tags: csv_data.append(br.next.strip()) #get the element after the
tag csv_str = ",".join(csv_data) print(csv_str) --output:-- some link,some data 1,some data 2,some data 3
0

Đầu ra: & nbsp;

https://media.geeksforgeeks.org/wp-content/uploads/20210419123712/gfg-priyaraj-article-page-scraped-to-offline-mode-html-and-printing-in-console.mp4

Theo cách này có thể nhận được dữ liệu HTML. Bây giờ thực hiện một số hoạt động và một số sâu sắc trong dữ liệu.

Ví dụ 1:

Chúng ta có thể sử dụng các phương thức find () và khi nội dung HTML thay đổi một cách linh hoạt, chúng ta có thể không biết tên thẻ chính xác. Trong thời gian đó, chúng ta có thể sử dụng Findall (đúng) để lấy tên thẻ trước, và sau đó chúng ta có thể thực hiện bất kỳ loại thao tác nào. Ví dụ: lấy tên thẻ và độ dài của thẻ

Python3

for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
9
0
some linksome data 1some data 2some data 3
0
2

3
some linksome data 1some data 2some data 3
5
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 2
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 3
7
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 5
9
some linksome data 1some data2some data3
0

some linksome data 1some data2some data3
1
some linksome data 1some data 2some data 3
5
some linksome data 1some data2some data3
3

some linksome data 1some data2some data3
4
some linksome data 1some data 2some data 3
5
some linksome data 1some data2some data3
6
some linksome data 1some data2some data3
7
some linksome data 1some data2some data3
0

Đầu ra: & nbsp;

some linksome data 1some data 2some data 3
7
for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
3
for td in tds:
    a_tag = td.find('a')
    if a_tag: csv_data.append(a_tag.text)

    text_strings = a_tag.findNextSiblings( text=re.compile('\S+') )  #find only non-whitespace text nodes
    csv_data.extend(text_strings)

csv_str = ",".join(csv_data)
print(csv_str)

--output:--
some link,some data 1,some data 2,some data 3
9
pip install beautifulsoup4
0
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 5
pip install beautifulsoup4
2
pip install beautifulsoup4
3

Output:

https://media.geeksforgeeks.org/wp-content/uploads/20210419124258/gfg-scraped-data-and-get-the-tag-names-and-length.mp4

Theo cách này có thể nhận được dữ liệu HTML. Bây giờ thực hiện một số hoạt động và một số sâu sắc trong dữ liệu.

Ví dụ 1:

Chúng ta có thể sử dụng các chức năng mô -đun của OS OS. Hãy để chúng tôi lấy thư mục hiện tại tất cả các tệp HTML cho các ví dụ của chúng tôi

Hướng dẫn how do i pull html data from python? - làm cách nào để lấy dữ liệu html từ python?

Vì vậy, nhiệm vụ của chúng tôi là lấy tất cả các tệp HTML để bị loại bỏ. Theo cách dưới đây, chúng ta có thể đạt được. Toàn bộ các tệp HTML thư mục được xóa từng cái một và độ dài thẻ của chúng cho tất cả các tệp được truy xuất và nó được hiển thị trong video đính kèm.

Python3

some linksome data 1some data 2some data 3
0
pip install beautifulsoup4
5

for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
9
0
some linksome data 1some data 2some data 3
0
2

some linksome data 1some data 2some data 3
00
some linksome data 1some data 2some data 3
5
some linksome data 1some data 2some data 3
02

for td in tds:
    a_tag = td.find('a')
    if a_tag: csv_data.append(a_tag.text)

    text_strings = a_tag.findNextSiblings( text=re.compile('\S+') )  #find only non-whitespace text nodes
    csv_data.extend(text_strings)

csv_str = ",".join(csv_data)
print(csv_str)

--output:--
some link,some data 1,some data 2,some data 3
1
some linksome data 1some data 2some data 3
04
for td in tds:
    a_tag = td.find('a')
    if a_tag: csv_data.append(a_tag.text)

    text_strings = a_tag.findNextSiblings( text=re.compile('\S+') )  #find only non-whitespace text nodes
    csv_data.extend(text_strings)

csv_str = ",".join(csv_data)
print(csv_str)

--output:--
some link,some data 1,some data 2,some data 3
3
some linksome data 1some data 2some data 3
06

some linksome data 1some data 2some data 3
7
some linksome data 1some data 2some data 3
08
some linksome data 1some data 2some data 3
09
some linksome data 1some data 2some data 3
10
for td in tds:
    a_tag = td.find('a')
    if a_tag: csv_data.append(a_tag.text)

    text_strings = a_tag.findNextSiblings( text=re.compile('\S+') )  #find only non-whitespace text nodes
    csv_data.extend(text_strings)

csv_str = ",".join(csv_data)
print(csv_str)

--output:--
some link,some data 1,some data 2,some data 3
6

some linksome data 1some data 2some data 3
12
some linksome data 1some data 2some data 3
13
some linksome data 1some data 2some data 3
5
some linksome data 1some data 2some data 3
15

some linksome data 1some data 2some data 3
12
for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
3
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 3
some linksome data 1some data 2some data 3
19
some linksome data 1some data 2some data 3
20

some linksome data 1some data 2some data 3
12
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 1
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 2
some linksome data 1some data 2some data 3
24
some linksome data 1some data 2some data 3
25
some linksome data 1some data 2some data 3
26
some linksome data 1some data 2some data 3
27
some linksome data 1some data 2some data 3
28

some linksome data 1some data 2some data 3
29
some linksome data 1some data2some data3
4
some linksome data 1some data 2some data 3
5
some linksome data 1some data 2some data 3
32
some linksome data 1some data 2some data 3
27
some linksome data 1some data 2some data 3
34
some linksome data 1some data 2some data 3
35
some linksome data 1some data2some data3
0

Các

some linksome data 1some data 2some data 3
44
for td in tds:
    print(re.sub("\n+", ",", td.text.lstrip() ) ) 

--output:--
some link,some data 1,some data 2,some data 3
3
for td in tds:
    a_tag = td.find('a')
    if a_tag: csv_data.append(a_tag.text)

    text_strings = a_tag.findNextSiblings( text=re.compile('\S+') )  #find only non-whitespace text nodes
    csv_data.extend(text_strings)

csv_str = ",".join(csv_data)
print(csv_str)

--output:--
some link,some data 1,some data 2,some data 3
9
pip install beautifulsoup4
0
from bs4 import BeautifulSoup as bs
import re

html = """
""" soup = bs(html) tds = soup.find_all('td') csv_data = [] for td in tds: inner_text = td.text strings = inner_text.split("\n") csv_data.extend([string for string in strings if string]) print(",".join(csv_data)) --output:-- some link,some data 1,some data 2,some data 3 5
pip install beautifulsoup4
2
pip install beautifulsoup4
3

Output: 

https://media.geeksforgeeks.org/wp-content/uploads/20210419125444/gfg-scraping-multiple-files.mp4


Làm cách nào để lấy dữ liệu HTML từ Python?

Cài đặt đẹp.Sử dụng Trình quản lý gói Anaconda để cài đặt gói yêu cầu và các gói phụ thuộc của nó.....
Đọc tệp HTML.Trong ví dụ dưới đây, chúng tôi yêu cầu một URL được tải vào môi trường Python.....
Trích xuất giá trị thẻ.....
Trích xuất tất cả các thẻ ..

Có thể đầu ra Python cho HTML?

Ngôn ngữ Python có những ứng dụng tuyệt vời ngày nay trong hầu hết mọi lĩnh vực, nó có thể được sử dụng cùng với các công nghệ khác để làm cho cuộc sống của chúng ta dễ dàng hơn.Một cách sử dụng Python như vậy là nhận được đầu ra dữ liệu trong tệp HTML.Chúng tôi có thể lưu bất kỳ số lượng dữ liệu đầu vào của chúng tôi vào tệp HTML trong Python bằng các ví dụ sau theo hai cách.One such use of python is getting the data output in an HTML file. We can save any amount of our input data into an HTML file in python using the following examples in two ways.

Làm thế nào để bạn xóa dữ liệu từ các tệp HTML cục bộ bằng Python?

Thêm cột mới vào DataFrame hiện có trong Pandas ..
Hàm Python Map () ..
Đọc tệp JSON bằng Python ..
Lấy đầu vào trong Python ..
Cách lấy tên cột trong Pandas DataFrame ..
Đọc một dòng tệp từng dòng trong Python ..
Từ điển Python ..
Lặp lại trong một danh sách trong Python ..

Bạn không nên sử dụng regexes trên HTML. Bạn nên sử dụng BeautifulSoup hoặc LXML. Dưới đây là một số ví dụ sử dụng đẹp:

Thẻ TD của bạn thực sự trông như thế này:

newline some linknewline
newline some data 1
newline some data 2
newline some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3
some link
some data 1
some data 2
some data 3