【问题标题】:Beautifulsoup Missing IDBeautifulsoup 缺少 ID
【发布时间】:2019-07-05 19:00:42
【问题描述】:

我正在尝试从 this site 中删除类 div id="ideas_body",但它似乎丢失了。我已经尝试过链接到这篇文章(Missing parts on Beautiful Soup results)的different parsers,但没有一个成功。

这是我的代码:

import requests
from bs4 import BeautifulSoup
import lxml

# Set Soup
url = 'https://www.com/ideas#'
headers = {'User-Agent': 'Mozilla/5.0'}
page = requests.get(url, headers=headers)

以及我尝试过的不成功的解析器:

  1. soup = BeautifulSoup(page.content, 'lxml-xml')
  2. soup = BeautifulSoup(page.content, 'html.parser')
  3. soup = BeautifulSoup(page.content, 'html.parser-xml')
  4. soup = BeautifulSoup(page.content, 'html5lib')

那么我怎样才能解析这个 ID 以便抓取它呢?

【问题讨论】:

  • 我在 HTML 中看不到 class="ideas_body"。我看到id="ideas_body"
  • @Barmar - 抱歉错字。刚刚修复
  • 可能这个页面使用了JavaScript来添加这个元素,然后BeautifulSoup就没有用了,因为它不能运行JavaScript。
  • 不抓取网页,调用网页填写DIV的API。
  • 抓取网页的通常原因是没有等效的 API。但显然有这种情况。

标签: python xml web-scraping beautifulsoup


【解决方案1】:

正如前面在 cmets 中提到的,没有必要刮。您只需调用 API 即可获取所需的数据。

如果您需要超过 30 个结果,请更改 form_data 中的“per_page”。

import requests


form_data = {'type': 'idea',
             'show': 'all',
             'sort': 'new',
             'per_page': 30,
             'gotodate': '04/06/2019',
             'ls': 'all',
             'loc': 'all',
             'marketcap_l': 0,
             'shorten_name': 1
             }

response = requests.post('https://www.valueinvestorsclub.com/messages/loadmsgs', data=form_data)

ideas = response.json()['result']

希望对你有帮助!

【讨论】:

  • 这很接近,尽管它是错误的端点。应该是 ~/ideas/loadideas 而不是 ~/messages/loadmsgs (因此不同 form_data)。
猜你喜欢
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 2023-01-22
  • 2015-10-12
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多