使用BeautifulSoup抓取网站后缺少文本

猎鹰恋人

我正在编写一个python脚本,以获取特定用户在正在进行的hactoberfest事件期间生成的拉取请求的数量。这是hacktoberfest官方网站的链接
这是我的代码:

url= 'https://hacktoberfest.digitalocean.com/stats/user'
import urllib.request
from bs4 import BeautifulSoup
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
html = urllib.request.urlopen(req).read()
soup = BeautifulSoup(html, 'html.parser')
name_box = soup.find('div', attrs={'class': 'userstats--progress'})
print(name_box)

代码第一行中的“用户”应替换为用户的github句柄(例如BAJUKA)。

以下是我要抓取的HTML标签:

<div class="userstats--progress">
        <p>
          Progress (<span data-js="userPRCount">5</span>/5)
        </p>
          <div class="ProgressBar ProgressBar--three u-mb--regular ProgressBar--full" data-js="progressBar"></div>
      </div>

这是我运行代码后得到的:

<div class="userstats--progress">
<p>
          Progress (<span data-js="userPRCount"></span>/5)
        </p>
<div class="ProgressBar ProgressBar--three u-mb--regular" data-js="progressBar"></div>
</div>

区别在第三行,其中缺少拉取请求的数量(即,在span标签中缺少5)
这些是我要问的问题:1.
为什么没有。刮掉的行中缺少多少个拉取请求(即本例中为5个)?
2.如何解决这个问题?那是没有。请求成功。

克丹尼布

您要查找的数据不在hacktober服务器发送的原始数据中,Beautiful Soup下载并解析;加载原始数据后,通过浏览器在该页面上运行的Javascript代码将其插入HTML。

如果您使用此shell命令下载实际用作页面的数据,则会看到您正在查看的span标签开始为空:

curl -s 'https://hacktoberfest.digitalocean.com/stats/BAJUKA' | grep -3 Progress

填充该标签的javascript是什么?好吧,它已缩小,因此很难清除正在发生的事情。您可以在以下原始数据的最底部找到它:

curl -s 'https://hacktoberfest.digitalocean.com/stats/BAJUKA' | grep -3 "script src=" | tail -n5

当我运行它时,输出以下内容:

<script src="https://go.digitalocean.com/js/forms2/js/forms2.min.js"></script>
<script src="/assets/application-134859a20456d7d32be9ea1bc32779e87cad0963355b5372df99a0cff784b7f0.js"></script>

看起来很疯狂的源URL是Javascript的精简版,这意味着它已自动缩小,这也意味着它几乎不可读。但是,如果您转到该页面。,然后从下到下,您会看到一些乱码的Javascript,可以尝试对其进行解码。

我注意到了这一点:

var d="2018-09-30T10%3A00%3A00%2B00%3A00",f="2018-11-01T12%3A00%3A00%2B00%3A00";$.getJSON("https://api.github.com/search/issues?q=-label:invalid+created:"+d+".."+f+"+type:pr+is:public+author:"+t+"&per_page=300"

我认为这是从那里获取数据以填充该DIV的地方。如果您加载并解析URL,我想您会找到所需的数据。您需要填写该搜索的日期和作者。祝好运!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用BeautifulSoup网站抓取IMDb页面

无法使用BeautifulSoup4抓取网站

使用BeautifulSoup抓取网站后,如何分割单词和数字?

使用BeautifulSoup抓取网站时阅读页码

使用BeautifulSoup抓取预标签内的文本

使用BeautifulSoup抓取网站时显示符号

使用Selenium和BeautifulSoup输入内容来抓取网站?

我无法使用BeautifulSoup抓取HTML文本

使用beautifulsoup抓取HTML网站ID的特定部分

使用python中的BeautifulSoup从网站抓取报告

使用BeautifulSoup 4.8.2从网站抓取表格

当我尝试使用BeautifulSoup从网站抓取时缺少文本

如何使用Beautifulsoup从网站上抓取产品价格?

如何使用BeautifulSoup从eCom网站上抓取<li>?

HTML文本更改后,beautifulsoup(网络抓取)未更新变量

如何使用BeautifulSoup抓取缺少标签的网页

使用BeautifulSoup抓取特定网站

使用python 2.7和beautifulsoup 4进行网站抓取

使用 BeautifulSoup 抓取网站:TypeError: 'NoneType' 对象不可调用

使用 BeautifulSoup 从网站抓取数据的问题

使用 BeautifulSoup 从抓取的页面中提取文本

无法使用beautifulsoup抓取日本网站

无法使用beautifulsoup抓取div文本

Beautifulsoup 抓取 - 缺少可扩展的标题文本

使用 python 抓取网站 - BeautifulSoup

Python 3 BeautifulSoup 在“阅读更多”文本后抓取内容

使用 python 抓取网站后,如何搜索特定文本?

无法使用 Selenium 和 BeautifulSoup 抓取文本

不使用beautifulsoup抓取网站数据