【问题标题】:Why doesn't Beautifulsoup return the required items from this page?为什么 Beautifulsoup 不从该页面返回所需的项目?
【发布时间】:2020-06-23 17:06:55
【问题描述】:

我遵循教程,但无论我要求什么,比如 menuitem = page_soup.findAll("h5") 它一直没有返回,但我知道它们存在,我可以看到它们,但它什么也没找到 我做的和教程完全一样,但它一直说什么都没有,我试图从工厂现场拉出来,用我的语言找到植物的名称,该名称在页面上显示和可见 例如:https://identify.plantnet.org/observation/weurope/1007256673

我试图从该页面中获取一个单词,这似乎是不可能的,因为汤一直在说事情不存在时 感谢您的帮助

【问题讨论】:

  • 请发布您正在使用的代码
  • 为了帮助解决这个问题,如果您将正在使用的代码发布到您调用 findAll() 的位置,将会很有帮助。有关说明,请参阅meta.stackoverflow.com/a/251362/28106
  • 您还应该使用print(soup.prettify()) 命令查看您用作“汤”的“页面源”
  • import bs4 from urllib.request import urlopen as req from bs4 import BeautifulSoup as soup crime_url = "identify.plantnet.org/observation/weurope/1007256673" page_list = req(determination_url) page_info = page_list.read() page_list.close() soup_page = soup(page_info, "html.parser") 容器 = soup_page.findAll("a")

标签: python web-scraping beautifulsoup


【解决方案1】:

数据是从他们的 API 以 Json 格式动态加载的,所以 BeautifulSoup 看不到它。但是你可以使用requests 模块来加载它:

import json
import requests


url = 'https://identify.plantnet.org/observation/weurope/1007256673'

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}
api_url = 'https://api.plantnet.org/v1/projects/weurope/observations/{plant_id}?lang=en'
plant_id = url.split('/')[-1]

data = requests.get(api_url.format(plant_id=plant_id), headers=headers).json()

# uncomment this to print all data:
# print(json.dumps(data, indent=4))

# print some data to screen:
print('{} - {}'.format(data['submittedName'], data['species']['commonNames'][0]))

打印:

Solanum dulcamara L. - Bittersweet

【讨论】:

  • 我完全忘了谢谢你,这完全符合我的要求,我非常感谢,我设法完美地使用它来制作我想要制作的东西。我还有一个问题,你是如何到达你从中提取信息的那个 api 页面的,比如如果我想对一个网站执行此操作,在这种情况下我如何找出在哪里可以找到该链接:api.plantnet.org/v1/projects/weurope/observations{ plant_id}?lang=en' 但是你在哪里找到这个链接,如果我想在另一个网站上重复这个过程,我怎么能找到这样的链接,谢谢 :)
  • @user13281317 我通过 Firefox 开发者工具(网络选项卡)观察了 API 页面。在 Chrome 中也存在类似的东西。页面发出的所有请求,也包括 Ajax 调用。
猜你喜欢
  • 2021-10-13
  • 1970-01-01
  • 2021-04-26
  • 2018-02-17
  • 2020-10-02
  • 2020-04-13
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多