问题标签 [screen-scraping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
8014 浏览

python - 抓取动态网站

抓取大部分内容由看似 ajax 请求生成的动态网站的最佳方法是什么?我以前有过使用 Mechanize、BeautifulSoup 和 python 组合的经验,但我准备尝试一些新的东西。

--编辑--有关更多详细信息:我正在尝试抓取 CNN主数据库。那里有丰富的信息,但似乎没有api。

0 投票
6 回答
96785 浏览

python - 使用python从HTML页面源下载图像文件?

我正在编写一个从 HTML 页面下载所有图像文件并将它们保存到特定文件夹的刮板。所有图像都是 HTML 页面的一部分。

0 投票
11 回答
81506 浏览

screen-scraping - 如何将 HTML 表格抓取到 CSV?

问题

我在工作中使用了一个工具,它可以让我进行查询并取回 HTML 信息表。我没有任何形式的后端访问它。

如果我可以将这些信息放入电子表格中进行排序、平均等,那么这些信息会更加有用。如何将这些数据截屏到 CSV 文件中?

我的第一个想法

因为我知道 jQuery,我想我可以用它来去除屏幕上的表格格式,插入逗号和换行符,然后将整个混乱复制到记事本中并保存为 CSV。有更好的想法吗?

解决方案

是的,伙计们,这真的就像复制和粘贴一样简单。我不觉得很傻吗。

具体来说,当我粘贴到电子表格中时,我必须选择“选择性粘贴”并选择“文本”格式。否则,即使我突出显示了整个电子表格,它也会尝试将所有内容粘贴到单个单元格中。

0 投票
8 回答
21143 浏览

php - PHP CSS 选择器库?

是否有允许我使用 CSS 选择器查询 XHTML 文档的 PHP 类/库?如果我能以某种方式使用 CSS 选择器(jQuery 宠坏了我!),我需要抓取一些非常容易访问的数据页面。有任何想法吗?

0 投票
1 回答
980 浏览

python - 如何扫描网页并获取图像和 youtube 嵌入?

我正在构建一个网络应用程序,我需要在其中获取所有图像和任何嵌入在给定 URL 上的 Flash 视频(例如 youtube)。我正在使用 Python。

我用谷歌搜索过,但没有找到任何关于这个的好信息(可能是因为我不知道这被称为搜索什么),有没有人有这方面的经验并且知道如何做到这一点?

如果有可用的代码示例,我很乐意看到一些代码示例。

谢谢!

0 投票
5 回答
1921 浏览

html - 从 HTML 文档中抓取最大的文本块

我正在研究一种算法,该算法将在给定 HTML 文件的情况下尝试挑选出它认为最有可能包含页面大部分内容文本的父元素。例如,它将选择以下 HTML 中的 div“内容”:

我想出了一些想法,比如遍历 HTML 文档树到它的叶子,将文本的长度相加,并且只有在父级给我们的内容比子级多的情况下才能查看父级的其他文本。

有没有人尝试过这样的事情,或者知道可以应用的算法?它不必是可靠的,但只要它能够猜出包含大部分页面内容文本的容器(例如,对于文章或博客文章),那就太棒了。

0 投票
2 回答
6892 浏览

php - 无法从本地主机通过 cURL 访问网站,但可以从托管服务器访问网站

我正在编写一个使用 PHP 5 和 cURL 从 wowarmory.com 提取 XML 数据的脚本:

当我从我的托管 Web 服务器运行它时,我得到了预期的 XML 响应。但是从我的本地主机网络服务器运行时,我什么也得不到。

我可以通过 cURL 从 localhost(yahoo.com,甚至 worldofwarcraft.com)获取任何其他网站,但不能获取 wowarmory.com。所以我知道 cURL 运行正常。

我正在使用以下版本的 PHP 和 cURL:

托管服务器:

  • php 5.2.6
  • cURL libcurl/7.16.1 OpenSSL/0.9.7e zlib/1.2.3

本地主机:

  • php 5.2.6
  • cURL libcurl/7.16.0 OpenSSL/0.9.8i zlib/1.2.3

有任何想法吗?

编辑:本地主机正在运行 Windows XP SP3。我可以通过网络浏览器访问 wowarmory.com。Tracert 在第 13 跳开始超时(显然是从我的位置开始):

不幸的是,我不熟悉 tcptraceroute。

curl 的 Windows 二进制版本不会为 http://www.wowarmory.com/ 返回任何内容,会为http://www.yahoo.com/返回任何内容

我没有 wget 可用。

编辑2:我可以访问我的本地化网站就好了。这只是我没有收到 curl 的回复。我正在运行一个几乎默认的 XAMPP 安装(windows xp 上的 apache 2)。所有这一切都很好。

0 投票
4 回答
3769 浏览

html - 使用 CSS 进行布局和格式化的屏幕抓取页面...如何抓取适用于 html 的 CSS?

我正在开发一个应用程序,用于对外部网页的一小部分(不是整个页面,只是其中的一小部分)进行屏幕抓取。

所以我的代码可以完美地抓取 html,但我的问题是我不仅想抓取原始 html,还想抓取用于格式化我正在提取的页面部分的 CSS 样式,所以我可以显示在新页面的原始格式完好无损。

如果您熟悉 firebug,它能够显示哪些 CSS 样式适用于您突出显示的页面的特定子集,所以如果我能找到一种方法来做到这一点,那么我可以在显示时使用这些样式我的新页面上的内容。但我不知道如何做到这一点............

0 投票
2 回答
318 浏览

html - c# XML操作VB代码转换查询...等等!

我正在按照 VB 教程使用 LINQ 进行一些 HTML 操作

它具有以下构造

我如何在 C# 中做同样的事情?

似乎有一个叫做 XMLNamespaceManager 的东西可以保存解决方案,但我太愚蠢了,无法理解如何使用它,而且我不确定它是否是正确的树。

有什么建议吗?

0 投票
5 回答
1180 浏览

screen-scraping - 获取列表的最快方法 values from all pages on localhost website</h1> <div id="body"><p>I essentially want to spider my local site and create a list of all the titles and URLs as in:</p> <pre> http://localhost/mySite/Default.aspx</a> </h3> <div class="s-post-summary--content-excerpt"> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/screen-scraping" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">screen-scraping</a><a href="/tags/web-crawler" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">web-crawler</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> DLarsen </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2008-12-02T20:01:53.073</span></time> </div> </div> </div> </div> </div> <br class="cbt"> <div class="s-pagination site1 themed pager float-left"> <a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=1" rel="" title="Go to page 2">1</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=2" rel="" title="Go to page 2">2</a><a class="s-pagination--item js-pagination-item is-selected" href="/tags/screen-scraping?p=3" rel="" title="Go to page 2">3</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=4" rel="" title="Go to page 2">4</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=5" rel="" title="Go to page 2">5</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=6" rel="" title="Go to page 2">6</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=7" rel="" title="Go to page 2">7</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=8" rel="" title="Go to page 2">8</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=9" rel="" title="Go to page 2">9</a><a class="s-pagination--item js-pagination-item " href="/tags/screen-scraping?p=10" rel="" title="Go to page 2">10</a></div> </div> <div id="sidebar" class="show-votes" role="complementary" aria-label="sidebar"> <div class="module js-gps-related-tags" id="related-tags"> <h4 id="h-related-tags">Reference</h4> <div data-name="javascript"> <a href="https://php.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">php</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1429865</span> </span> </div> <div data-name="javascript"> <a href="https://c-cpp.com" class="post-tag no-tag-menu js-gps-track" target="_blank">c/c++</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">756500</span> </span> </div> <div data-name="javascript"> <a href="https://nginx.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">nginx</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49975</span> </span> </div> <div data-name="javascript"> <a href="https://mongodb.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">mongodb</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">159057</span> </span> </div> <div data-name="javascript"> <a href="https://mybatis.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">mybatis</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">3233</span> </span> </div> <div data-name="javascript"> <a href="https://anaconda.org.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">anaconda</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">13410</span> </span> </div> <div data-name="javascript"> <a href="https://pycharm.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">pycharm</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">14671</span> </span> </div> <div data-name="javascript"> <a href="https://python.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">python</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1902243</span> </span> </div> <div data-name="javascript"> <a href="https://vscode.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">vscode</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">56040</span> </span> </div> <div data-name="javascript"> <a href="https://dockerdocs.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">docker</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">110988</span> </span> </div> <div data-name="javascript"> <a href="https://github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">github</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49000</span> </span> </div> <div data-name="javascript"> <a href="https://flask.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">flask</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49129</span> </span> </div> <div data-name="javascript"> <a href="https://ffmpeg.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">ffmpeg</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">24037</span> </span> </div> <div data-name="javascript"> <a href="https://jmeter.net" class="post-tag no-tag-menu js-gps-track" target="_blank">jmeter</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">16910</span> </span> </div> <div data-name="javascript"> <a href="https://matplotlib.net" class="post-tag no-tag-menu js-gps-track" target="_blank">matplotlib</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">63493</span> </span> </div> <div data-name="javascript"> <a href="https://getbootstrap.net" class="post-tag no-tag-menu js-gps-track" target="_blank">bootstrap</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">54641</span> </span> </div> </div> </div> </div> </div> <footer id="footer" class="site-footer js-footer" role="contentinfo"> <div class="site-footer--container"> <div class="site-footer--logo"> <a href="https://stackoverflow.com"><svg aria-hidden="true" class="native svg-icon iconLogoGlyphMd" width="32" height="37" viewBox="0 0 32 37"><path d="M26 33v-9h4v13H0V24h4v9h22Z" fill="#BCBBBB"/><path d="m21.5 0-2.7 2 9.9 13.3 2.7-2L21.5 0ZM26 18.4 13.3 7.8l2.1-2.5 12.7 10.6-2.1 2.5ZM9.1 15.2l15 7 1.4-3-15-7-1.4 3Zm14 10.79.68-2.95-16.1-3.35L7 23l16.1 2.99ZM23 30H7v-3h16v3Z" fill="#F48024"/></svg></a> </div> <nav class="site-footer--nav"> <div class="site-footer--col"> <h5 class="-title"><a href="https://stackoverflow.org.cn" class="js-gps-track" data-gps-track="footer.click({ location: 3, link: 15})">Stack Overflow 中文网</a></h5> <p>遵从 CC BY-SA 知识共享许可协议。</p> </div> </nav> </div> </footer> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?709ff2ad9744e86b5b0eee677fc13ede"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-1MW5BV8G8E"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-1MW5BV8G8E'); </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6117966252207595" crossorigin="anonymous"></script> </body> </html>