python - 从网页抓取时如何识别要指定的 HTML 标签或类?
问题描述
我想在一个网站上抓取新闻链接(在下面的屏幕截图中突出显示):
当我inspect
翻页时,我看到我想要的链接包含在col-sm-5
tag 下的类中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
;我想它找不到标签。所以,我的问题是,如何指定查找和提取链接所需的类、标签或其他信息?
解决方案
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
推荐阅读
- python - 如何将列视为二进制
- asp.net - 在 Entity Framework Core 中使用 `ExecuteSqlRaw` 执行存储过程后显示错误
- javascript - Javascript for循环计算两个数据数字之间所有数字的平方根,通过表单添加
- reactjs - 如何在 firebase CRUD 操作中指定特定的 auth.uid 元数据
- java - 简单的 Java 程序不打印任何东西
- kubernetes - 访问在浮动 IP 后面运行在 Openstack 上的 K8S API Server
- python - 熊猫:来自不同行的相等值
- html - primeng flex 网格,设置 col 大小小于 1/12 Angular 8
- django - django:将附加数据传递给 FormView 中的上下文
- json - 如何提醒 React-JS 获取值