![](/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.