首页 > 解决方案 > 从网页抓取时如何识别要指定的 HTML 标签或类?

问题描述

我想在一个网站上抓取新闻链接(在下面的屏幕截图中突出显示):

在此处输入图像描述

当我inspect翻页时,我看到我想要的链接包含在col-sm-5tag 下的类中h5。我想抓取li该 div 类中的所有 4 个链接(带有 tag )col-sm-5,. 因此,我编写了以下代码来提取链接:

import requests 
page = requests.get("http://www3.asiainsurancereview.com/News","html.parser")
soup = BeautifulSoup(page.text, "html.parser")
li_box = soup.find('h5', attrs={'class': 'col_sm_5'})
print(li_box) 

但我得到的输出是none;我想它找不到标签。所以,我的问题是,如何指定查找和提取链接所需的类、标签或其他信息?

标签: pythonhtmlweb-scrapingbeautifulsoup

解决方案


requests.get()不需要"html.parser",这是为了beautifulsoup。

此外,类名col-sm-5不是col_sm_5.

最好使用 responsecontent而不是text. (可能不是真的,见评论)

您可以使用 css 选择器,如下所示:

import requests
from bs4 import BeautifulSoup

page = requests.get("http://www3.asiainsurancereview.com/News")
soup = BeautifulSoup(page.content, "html.parser")
li_box = soup.select('div.col-sm-5 > ul > li > h5 > a')
for link in li_box:
    print(link['href'])

输出:

/Mock-News-Article/id/42945/Type/eDaily/New-Zealand-Govt-starts-public-consultation-phase-of-review-of-insurance-law
/Mock-News-Article/id/42946/Type/eDaily/India-M-A-deals-brewing-in-insurance-sector
/Mock-News-Article/id/42947/Type/eDaily/China-Online-insurance-premiums-soar-31-in-1Q2018
/Mock-News-Article/id/42948/Type/eDaily/South-Korea-Courts-increasingly-see-65-as-retirement-age

推荐阅读