【问题标题】:Missing Website Text Using Beautiful Soup使用 Beautiful Soup 丢失网站文本
【发布时间】:2019-08-23 21:56:13
【问题描述】:

我正在尝试用漂亮的汤来计算行程时间:

https://betaplanner.trimet.org/map/#/?fromPlace=10255%20SW%20CANYON%20RD%3A%3A45.493227%2C-122.782138&toPlace=4809%20N%20KERBY%20AVE%3A%3A45.557817%2C-122.673216&date=2019-08-14&time=16%3A56&arriveBy=false&mode=BUS%2CTRAM%2CRAIL%2CGONDOLA%2CCAR_RENT&showIntermediateStops=true&optimize=QUICK&ignoreRealtimeUpdates=true&companies=NaN&minTransitDistance=50%25&searchTimeout=10000&onlyTransitTrips=true&ui_activeItinerary=0

问题似乎与 javascript 渲染有关,但是,当我尝试执行 html-requests 时,出现错误

对于 Bs4:

 r = session.get(*linkfromabove*)
    soup = BeautifulSoup(r.content, 'html.parser')
    soup.select

对于 HTML_Requests:

import requests
from requests_html import HTMLSession
session = HTMLSession()
r = session.get(linkfromabove)
r.html.render(wait=8, sleep=8)

使用 BS4 的实际结果:

<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="ie=edge" http-equiv="x-ua-compatible"/>
<title>TriMet MOD OTP Demo</title>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<link href="https://fonts.googleapis.com/css? 
family=Hind:300,400,500,600,700" 
rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/></head>
<body>
<div id="main"></div>
<script src="bundle.js" type="text/javascript"></script></body>
</html>

来自 Html 请求:

 pyppeteer.errors.NetworkError: Protocol error Target.closeTarget: Target closed.

【问题讨论】:

  • bs4 和 requests 都不做 javascript 渲染。除了硒,我没有任何想法。

标签: html web-scraping beautifulsoup


【解决方案1】:

如果您检查网络选项卡,您将看到一个返回带有您的信息的 json 的请求

import requests

r = requests.get('https://maps.trimet.org/otp_mod/plan?fromPlace=10255%20SW%20CANYON%20RD%3A%3A45.493227%2C-122.782138&toPlace=4809%20N%20KERBY%20AVE%3A%3A45.557817%2C-122.673216&date=2019-08-14&time=16%3A56&arriveBy=false&mode=BUS%2CTRAM%2CRAIL%2CGONDOLA%2CCAR_RENT%2CWALK&showIntermediateStops=true&optimize=QUICK&ignoreRealtimeUpdates=true&companies=NaN&minTransitDistance=50%25&searchTimeout=10000&onlyTransitTrips=true').json()

【讨论】:

  • 您是否按原样复制?似乎仍然对我有用。
  • 查看F5刷新页面时能否在network tab中找到相同的url
  • 感谢您的快速回复。当我尝试使用我的原始链接时,我得到了这个错误代码:JSONDecodeError: Expecting value: line 1 column 1 (char 0)。您在哪里找到了这个新链接?
  • 在网络选项卡中。我打开原始网址并在网络选项卡 F12 中查看,然后按 F5 刷新页面。我在网络流量中搜索了我希望在结果中找到的值。 Example 和 example
猜你喜欢
  • 2015-09-04
  • 2019-09-20
  • 1970-01-01
  • 2020-04-06
  • 2021-08-04
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多