![](/img/trans.png)
[英]How to scrape specific text from a webpage in Python using BeautifulSoup?
[英]How to scrape text from this webpage?
我正在嘗試抓取此 HTML 標題
<h2 id="p89" data-pid="89"><span id="page77" class="pageNum" data-no="77" data-before-text="77"></span>Tuesday, July 30</h2>
從這個網站: https : //wol.jw.org/en/wol/h/r1/lp-e
我的代碼:
from bs4 import BeautifulSoup
import requests
url = requests.get('https://wol.jw.org/en/wol/h/r1/lp-e').text
soup = BeautifulSoup(url, 'lxml')
textodiario = soup.find('header')
dia = textodiario.h2.text
print(dia)
它應該返回我今天的一天,但它返回我過去的一天: Wednesday, July 24
目前我沒有要測試的 PC,請仔細檢查可能的錯誤。
您也需要適用於您的平台的chromedriver ,將其放在腳本的同一文件夾中。
我的想法是使用 selenium 來獲取 HTML 然后解析它:
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
url = "https://wol.jw.org/en/wol/h/r1/lp-e"
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)
time.sleep(3)
page = driver.page_source
driver.quit()
soup = BeautifulSoup(page, 'html.parser')
textodiario = soup.find('header')
dia = textodiario.h2.text
print(dia)
我實際上嘗試了你的代碼,網站/代碼獲取數據的方式肯定有問題。 因為當我將整個 URL 文本通過管道傳輸到七月的 grep 時,它會給出:
Wednesday, July 24
<h2 id="p71" data-pid="71"><span id="page75" class="pageNum" data-no="75" data-before-text="75"></span>Wednesday, July 24</h2>
<h2 id="p74" data-pid="74">Thursday, July 25</h2>
<h2 id="p77" data-pid="77">Friday, July 26</h2>
如果我不得不猜測,他們在 h2 下保留多個日期這一事實可能無濟於事,但我在網絡抓取方面的經驗幾乎為零。 如果你注意到了,7 月 30 日甚至不在那里,這意味着你的數據在這條線上的某個地方變得很奇怪(正如 LazyCoder 指出的那樣)。
希望 Selenium 可以解決您的問題。
轉到NetWork
選項卡,您將獲得鏈接。
https://wol.jw.org/wol/dt/r1/lp-e/2019/7/30
這是代碼。
from bs4 import BeautifulSoup
headers = {'User-Agent':
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
session = requests.Session()
response = session.get('https://wol.jw.org/wol/dt/r1/lp-e/2019/7/30',headers=headers)
result=response.json()
data=result['items'][0]['content']
soup=BeautifulSoup(data,'html.parser')
print(soup.select_one('h2').text)
輸出:
Tuesday, July 30
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.