[英]Python, How to parse HTML from URL?
我有 Python 代碼,可以解析來自包含 HTML 代碼的字符串變量的數據。
我想要從 URL 獲取 HTML 然后解析這些數據的代碼。
工作代碼(解析 HTML):
from bs4 import BeautifulSoup
data = '''\
<html>
<head>
<meta name="generator"
content="HTML Tidy for HTML5 (experimental) for Windows https://github.com/w3c/tidy-
html5/tree/c63cc39" />
<title></title>
</head>
<body>
<div class="Eqh F6l Jea k1A zI7 iyn Hsu">
<div class="Shl zI7 iyn Hsu">
<a data-test-id="search-guide" href="" title="Search for "living room colors"">
<div class="Jea Lfz XiG fZz gjz qDf zI7 iyn Hsu" style="white-space: nowrap; background-color:
rgb(162, 152, 139);">
<div class="tBJ dyH iFc MF7 erh tg7 IZT mWe">Living</div>
</div>
</a>
</div>
</div>
</body>
</html>
'''
soup = BeautifulSoup(data, 'html.parser')
a = soup.select('div.Eqh.F6l.Jea.k1A.zI7.iyn.Hsu a')[0]
print(a['title'])
這是我嘗試過但不起作用的方法(從 URL 獲取 HTML 然后解析):
import requests
from bs4 import BeautifulSoup
vgm_url = 'https://www.pinterest.com/search/pins/?q=skin%20care'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
a = soup.select('div.Eqh.F6l.Jea.k1A.zI7.iyn.Hsu a')
for a in soup.select('div.Eqh.F6l.Jea.k1A.zI7.iyn.Hsu a'):
print(a['title'])
我沒有收到任何錯誤,它不打印任何東西。 我感謝您的幫助。
然后在調試過程中使用print(html_text)
看看你得到了什么;)。
當您打印它時,您會看到它與頁面源不同(在 Chrome 或其他網絡瀏覽器中查看它,並在 url 中查看 go)。 當您在瀏覽器中對它進行 go 時,您還可以看到該頁面正在加載一段時間。
因此,您需要等待它加載Selenium 之類的東西。
為了演示一點 Selenium,我加載了您的頁面並單擊了帶有定義的 class 的內容,該定義在一段時間后加載:
# you will have to install (Chrome), or another browser driver
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = Chrome(r'C:\Program Files\chromedriver.exe') # I have (Chrome) installed here
driver.get("https://www.pinterest.com/search/pins/?q=skin%20care")
feeling_lucky_btn = WebDriverWait(driver, 3).until( # waiting for loading
EC.presence_of_element_located(
(By.CLASS_NAME, 'GrowthUnauthPinImage__Image'))) # identifiing element by class name
feeling_lucky_btn.click()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.