screen-scraping 相关问题

屏幕抓取(也称为网络抓取或数据抓取)是一种用于从用户界面收集和解析信息的软件技术。如果您的问题是关于从网站或Web-API进行抓取,请使用[web-scraping]标记。

如何为 scrape 编写相同的 3 div 类部分

我遇到了文本抓取问题。我正在抓取的网站有 3 个相同的 html 行,但有 3 个不同的信息。像这样 '...' '&...

回答 1 投票 0

DOM Xpath:在(无效)使用嵌套 <p><p> 和 </p></p> 标签

我无法选择文章的内容(在 Craft 中制作的文章),我认为是因为我以前的网站构建者在 HTML 中无效使用了双重/嵌套 P 标签。 为了澄清......的代码

回答 1 投票 0

从 Python 执行 Javascript

我有使用 xpath 爬行的 HTML 网页。某个节点的 etree.tostring 给了我这个字符串: <!-- function escramble_758(){ var a,b,c a='+1 ' b='84-' a...</desc> <question vote="78"> <p>我有使用 xpath 爬行的 HTML 网页。某个节点的 <pre><code>etree.tostring</code></pre> 给出了这个字符串:</p> <pre><code>&lt;script&gt; &lt;!-- function escramble_758(){ var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; document.write(a+c+b) } escramble_758() //--&gt; &lt;/script&gt; </code></pre> <p>我只需要<pre><code>escramble_758()</code></pre>的输出。我可以编写一个正则表达式来弄清楚整个事情,但我希望我的代码保持整洁。最好的选择是什么?</p> <p>我正在浏览以下库,但没有看到确切的解决方案。他们中的大多数人都试图模拟浏览器,这使得事情变得缓慢。</p> <ul> <li><a href="http://code.google.com/p/python-spidermonkey/">http://code.google.com/p/python-spidermonkey/</a>(清楚地说<pre><code>it&#39;s not yet possible to call a function defined in Javascript</code></pre>)</li> <li><a href="http://code.google.com/p/webscraping/">http://code.google.com/p/webscraping/</a>(没有看到任何 JavaScript 内容,我可能是错的)</li> <li><a href="http://pypi.python.org/pypi/selenium">http://pypi.python.org/pypi/selenium</a>(模拟浏览器)</li> </ul> <p>编辑:<em>一个例子会很棒..(准系统就可以)</em></p> </question> <answer tick="false" vote="74"> <p>您还可以使用 Js2Py,它是用纯 python 编写的,能够执行 javascript 并将其翻译为 python。支持几乎整个 JavaScript,甚至标签、getter、setter 和其他很少使用的功能。 </p> <pre><code>import js2py js = &#34;&#34;&#34; function escramble_758(){ var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; document.write(a+c+b) } escramble_758() &#34;&#34;&#34;.replace(&#34;document.write&#34;, &#34;return &#34;) result = js2py.eval_js(js) # executing JavaScript and converting the result to python string </code></pre> <p>Js2Py 的优点包括可移植性以及与 python 的极其轻松的集成(因为基本上 JavaScript 正在被翻译为 python)。 </p> <p>安装:</p> <pre><code>pip install js2py </code></pre> </answer> <answer tick="true" vote="58"> <p>使用<a href="https://code.google.com/p/pyv8/" rel="noreferrer">PyV8</a>,我可以做到这一点。但是,我必须将 <pre><code>document.write</code></pre> 替换为 <pre><code>return</code></pre>,因为没有 DOM,因此没有 <pre><code>document</code></pre>。</p> <pre><code>import PyV8 ctx = PyV8.JSContext() ctx.enter() js = &#34;&#34;&#34; function escramble_758(){ var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; document.write(a+c+b) } escramble_758() &#34;&#34;&#34; print ctx.eval(js.replace(&#34;document.write&#34;, &#34;return &#34;)) </code></pre> <p>或者您可以创建一个模拟文档对象</p> <pre><code>class MockDocument(object): def __init__(self): self.value = &#39;&#39; def write(self, *args): self.value += &#39;&#39;.join(str(i) for i in args) class Global(PyV8.JSClass): def __init__(self): self.document = MockDocument() scope = Global() ctx = PyV8.JSContext(scope) ctx.enter() ctx.eval(js) print scope.document.value </code></pre> </answer> <answer tick="false" vote="33"> <p>还有一个解决方案,因为 PyV8 似乎没有维护并且依赖于旧版本的 libv8。 </p> <p><a href="https://github.com/sqreen/PyMiniRacer" rel="noreferrer">PyMiniRacer</a> 它是 v8 引擎的包装器,可与新版本配合使用并得到积极维护。</p> <p><pre><code>pip install py-mini-racer</code></pre></p> <pre><code>from py_mini_racer import py_mini_racer ctx = py_mini_racer.MiniRacer() ctx.eval(&#34;&#34;&#34; function escramble_758(){ var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; return a+c+b; } &#34;&#34;&#34;) ctx.call(&#34;escramble_758&#34;) </code></pre> <p>是的,您必须按照其他人的建议将 <pre><code>document.write</code></pre> 替换为 <pre><code>return</code></pre> </p> </answer> <answer tick="false" vote="10"> <p>您可以使用 js2py 上下文来执行 js 代码并使用模拟文档对象从 document.write 获取输出:</p> <pre><code>import js2py js = &#34;&#34;&#34; var output; document = { write: function(value){ output = value; } } &#34;&#34;&#34; + your_script context = js2py.EvalJs() context.execute(js) print(context.output) </code></pre> </answer> <answer tick="false" vote="9"> <p>您可以使用 <a href="https://github.com/psf/requests-html" rel="noreferrer">requests-html</a> 它将在下面下载并使用 chromium。</p> <pre><code>from requests_html import HTML html = HTML(html=&#34;&lt;a href=&#39;http://www.example.com/&#39;&gt;&#34;) script = &#34;&#34;&#34; function escramble_758(){ var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; return a+c+b; } &#34;&#34;&#34; val = html.render(script=script, reload=False) print(val) # +1 425-984-7450 </code></pre> <p>更多信息请阅读<a href="https://requests-html.kennethreitz.org/#using-without-requests" rel="noreferrer">这里</a></p> </answer> <answer tick="false" vote="6"> <p>quickjs应该是quickjs出来之后最好的选择。 只需<pre><code>pip install quickjs</code></pre>,您就可以开始了。</p> <p>根据README上的例子修改。</p> <pre><code>from quickjs import Function js = &#34;&#34;&#34; function escramble_758(){ var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; document.write(a+c+b) escramble_758() } &#34;&#34;&#34; escramble_758 = Function(&#39;escramble_758&#39;, js.replace(&#34;document.write&#34;, &#34;return &#34;)) print(escramble_758()) </code></pre> <p><a href="https://github.com/PetterS/quickjs" rel="noreferrer">https://github.com/PetterS/quickjs</a></p> </answer> <answer tick="false" vote="5"> <p>虽然已经晚了,但你可以使用 pyv8 的后继者,它由一个名为 CloudFlare 的信誉良好的组织(主观)定期维护。这是存储库 URL:</p> <p><a href="https://github.com/cloudflare/stpyv8" rel="noreferrer">https://github.com/cloudflare/stpyv8</a></p> </answer> <answer tick="false" vote="5"> <p><a href="https://github.com/Distributive-Network/PythonMonkey" rel="noreferrer">PythonMonkey</a> 是一个使用 Firefox JS 引擎的新替代方案。</p> <p>只需<pre><code>pip install pythonmonkey</code></pre>即可开始。</p> <pre><code>import pythonmonkey as pm some_js_code = &#34;&#34;&#34; function escramble_758() { var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; return a+c+b; } escramble_758() &#34;&#34;&#34; res = pm.eval(some_js_code) print(res) # +1 425-984-7450 </code></pre> <hr/> <p>您还可以使用 <pre><code>pythonmonkey.require</code></pre></p> 直接从 Python 获取 JavaScript 文件 </answer> <answer tick="false" vote="0"> <p>2024 年,PyMiniRacer 不再维护。 新的 SotA 是它的叉子 <a href="https://bpcreech.com/PyMiniRacer/" rel="nofollow noreferrer">https://bpcreech.com/PyMiniRacer/</a></p> <p><pre><code>pip install mini-racer</code></pre></p> <pre><code>from py_mini_racer import MiniRacer ctx = MiniRacer() ctx.eval(&#34;&#34;&#34; function escramble_758(){ var a,b,c a=&#39;+1 &#39; b=&#39;84-&#39; a+=&#39;425-&#39; b+=&#39;7450&#39; c=&#39;9&#39; return a+c+b; } &#34;&#34;&#34;) ctx.call(&#34;escramble_758&#34;) </code></pre> </answer> </body></html>

回答 0 投票 0

以编程方式导航 Linux shell 应用程序

我正在尝试弄清楚是否可以以编程方式导航 Linux shell 应用程序 - 基于文本。 具体来说,我想通过使用 PHP 和 phpSecLib 来实现这一点,但如果你......

回答 1 投票 0

Selenium - 现在找不到服务搜索框来输入文本

请原谅我相对较少的硒知识,但我想做的是使用 servicenow 测试实例(开发人员网站允许您免费设置它们),并在那里我试图找到 el...

回答 1 投票 0

如何在Java中获取HTML

在不使用任何外部库的情况下,将网站的 HTML 内容获取到字符串中的最简单方法是什么?

回答 7 投票 0

Powershell Invoke-WebRequest 可以工作,但 Python 请求不行

这是一个奇怪的情况,Powershell Invoke-WebRequest 按预期工作,而 Python 请求却没有。 我正在尝试使用 python 抓取电子商务网站。刮的一部分...

回答 2 投票 0

如何获取用户公开Facebook帖子的所有评论?

我尝试过获取graph.facebook.com/v20.0/1****************3_7****************1/comments,其中 1****************3 是有效的用户 ID,7****************1 是有效的(且公开的)帖子 ID。 不幸的是,...

回答 1 投票 0

将邮政编码右移至ID

我正在使用Python从Rightmove中抓取一些数据。目前,我必须手动查找 rightmove 邮政编码 ID 才能生成 URL。有没有办法通过 API 来做到这一点? 为了考试...

回答 2 投票 0

如何在node.js中将HTML页面转换为纯文本?

我知道以前有人问过这个问题,但我找不到 Node.js 的好答案 我需要服务器端从获取的 HTML 页面中提取纯文本(无标签、脚本等)。 我知道该怎么做...

回答 5 投票 0

如何找到用react制作的下拉菜单的html/react代码?

我正在使用 javascript 和 puppeteer 来抓取似乎是在 React 中制作的网站上的信息。有一个包含一些选项的下拉菜单,触发器是一个包含跨度文本的按钮元素。

回答 1 投票 0

有按钮时用 python 抓取网站

我正在使用 BeautifulSoup,好的,正在抓取网站。但在这个网站中有三个列表按钮和四个其他按钮。每当我点击其中一个按钮时,网站就会发生变化......

回答 1 投票 0

我无法从该网站抓取域名?当我调用response.json()时,Postman返回json()但通过异常请求

我想从以下网站抓取域名和社交链接(linkedin、twitter)电子邮件。 https://cloud28plus.com/en/partner/resecurity--inc- 我尝试从网络请求中获取数据...

回答 1 投票 0

如何将网络图中的数据抓取到 R 中?

TRAC 移民网站提供了德克萨斯州每个城市按月和按年 ICE 驱逐出境的数据。我想将此数据下载到 R 中,但没有可用的数据文件。我

回答 1 投票 0

从 data.gov.uk/正则表达式中抓取数据

我正在尝试找出我应该使用的正则表达式是什么,以便从 gov.uk 网站上抓取一些数据。 基本上,我在以下 URL 上使用 file_get_contents:

回答 1 投票 0

如何筛选谷歌地图地点? [已关闭]

我有这张地图,https://maps.google.com/maps/ms?msa=0&msid=211195694269703855460.0004a7072cf25d4660761&ie=UTF8&ll=41.40205,2.157927&spn=0.103847,0.1331 32&来源=嵌入 我会...

回答 2 投票 0

有没有办法操纵 Discord.py 异步函数中参数的执行顺序?

首先,如果我在这个问题上使用了错误的术语,我深表歉意。希望我能提供详细信息。 我正在尝试发送文件(本地图像)并使用命令等待

回答 1 投票 0

有没有办法让同一个IP在Google搜索上发出超过10K的请求?

我目前正在开发一个需要从 Google 搜索结果中抓取数据的应用程序。例如 google.com/search?q=domain.com 等。但谷歌在做了一些之后屏蔽了我的 IP 地址

回答 2 投票 0

亚马逊抓取 - 抓取有时有效

我正在从亚马逊抓取数据用于教育目的,但我在 cookie 和反机器人方面遇到了一些问题。 我设法抓取数据,但有时,cookie 不会出现在响应中,o...

回答 3 投票 0

Selenium - 如何在Python中获取特定父类下的href属性

我正在尝试获取特定类下的 href 属性 这是 HTML 的示例 该类和 href 在整个页面中重复多次 我已经尝试过以下方法,但是...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.