我正在开发一个项目,我想在后台搜索一个网站的内容,并从该网站获取一些有限的内容.例如,在我的页面中,我有"userid"和"password"字段,通过使用那些我将访问我的邮件并抓取我的收件箱内容并将其显示在我的页面中.
我通过单独使用javascript完成了上述操作.但是,当我单击登录按钮时,我的页面的URL(http://localhost/web/Login.html)将更改为URL(http://mail.in.com/mails/inbox.php?nomail= ......)我被刮掉了.但我在不改变我的网址的情况下废弃了细节.
假设我有一个像这样的亚马逊产品网址
http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C/ref=amb_link_86123711_2?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-1&pf_rd_r=0AY9N5GXRYHCADJP5P0V&pf_rd_t=101&pf_rd_p=500528151&pf_rd_i=507846
Run Code Online (Sandbox Code Playgroud)
我怎么能用javascript 刮掉ASIN呢?谢谢!
Jeff Atwood最近的一篇博客文章说,你不应该使用正则表达式解析HTML - 但是没有提供替代方案.
我想抓搜索搜索结果,提取值:
<div class="used_result_container">
...
...
<div class="vehicleInfo">
...
...
<div class="makemodeltrim">
...
<a class="carlink" href="[Url]">[MakeAndModel]</a>
...
</div>
<div class="kilometers">[Kilometers]</div>
<div class="price">[Price]</div>
<div class="location">
<span class='locationText'>Location:</span>[Location]
</div>
...
...
</div>
...
...
</div>
...and it repeats
Run Code Online (Sandbox Code Playgroud)
你可以看到我想要提取的值,[括在括号中]:
假设我们接受解析HTML的前提:
这样做的方法是什么?
假设:
假设澄清:
原生Win32
本机Win32应用程序可以调用库代码:
松散的HTML
松散的HTML意味着HTML格式不正确xml(严格的HTML无论如何都不是格式良好的xml),因此不能使用XML解析器.实际上,我假设任何HTML解析器必须在它接受的HTML中慷慨.
假设 …
我正在使用python的机械化模块导航网站,并且无法点击下一页的javascript链接.我做了一些阅读,人们建议我需要python-spidermonkey和DOMforms.我设法安装它们我不确定实际点击链接的语法.
我可以将页面上的代码识别为:
<a href="javascript:__doPostBack('ctl00$MainContent$gvSearchResults','Page$2')">2</a>
Run Code Online (Sandbox Code Playgroud)
有谁知道如何点击它?或者,如果可能还有其他工具.
谢谢
我正在将一个在node.js中使用大量屏幕抓取的Web应用程序混合在一起.我觉得我在每个角落都在与当前的战斗作斗争.必须有一种更简单的方法来做到这一点.最值得注意的是,有两件事令人恼火:
Cookie传播.我可以从响应头中提取'set-cookie'数组,但执行字符串操作来解析数组中的cookie感觉非常hackish.
重定向以下.我希望每个请求在返回302状态代码时遵循重定向.
我遇到了两件看起来很有用的东西,但我最终无法使用:
http://zombie.labnotes.org/,但它没有HTTPS支持,所以我不能使用它.
http://www.phantomjs.org/,但无法使用它,因为它没有(似乎)与node.js集成.对于我正在做的事情,这也是非常重要的.
是否有任何JavaScript screenscraping-esque库传播cookie,遵循重定向并支持HTTPS?有关如何使这更容易的任何指针?
我正在尝试使用Ruby版本的Mechanize从我们正在离开的票证管理系统中提取我的雇主的票据,而不提供API.
问题是,似乎Mechanize没有在post通话和get下面显示的呼叫之间保留cookie :
require 'rubygems'
require 'nokogiri'
require 'mechanize'
@agent = Mechanize.new
page = @agent.post('http://<url>.com/user_session', {
'authenticity_token' => '<token>',
'user_session[login]' => '<login>',
'user_session[password]' => '<password>',
'user_session[remember_me]' => '0',
'commit' => 'Login'
})
page = @agent.get 'http://<url>.com/<organization>/<repo-name>/tickets/1'
puts page.title
Run Code Online (Sandbox Code Playgroud)
user_session是网站登录页面POST的URL,我已经确认这确实get会让我登录.但是从通话中返回的页面是'哎呀,你还没有登录!' 页.
我已经验证了click从post调用返回的页面上的链接是否正常工作,但实际上我无法在没有JavaScript的情况下到达我需要的位置.当然,我已经在浏览器上使用相同的登录成功完成了此操作.
我究竟做错了什么?
我想废弃一个包含地址,电子邮件等用户列表的网页.网页包含分页用户列表,即当我点击第2页链接时页面包含10个用户链接它将通过AJAX加载用户列表第2页并更新列表所以所有分页链接.
网站是在asp扩展.aspx页面开发的,因为我对asp.net一无所知以及asp如何管理分页和AJAX
我使用简单的html dom http://sourceforge.net/projects/simplehtmldom/来废弃包含
对于拥有用户的页面,<=10 我不必模拟AJAX请求,就像用户点击分页链接一样
但对于有分页从其他页面获取数据的页面,我正在模拟后AJAX请求
require 'simple_html_dom.php';
$html = file_get_html('www.example.com/user_list.aspx');
$viewstate = $html->find("#__VIEWSTATE");
$viewstate = $viewstate[0]->attr['value'];
$eventvalidation = $html->find("#__EVENTVALIDATION");
$eventvalidation = $eventvalidation[0]->attr['value'];
$number_of_pageinations = 3;
$pageNumberCodes = array(
'ctl00$cphMainContent$rdpMembers$ctl01$ctl01',
'ctl00$cphMainContent$rdpMembers$ctl01$ctl02',
'ctl00$cphMainContent$rdpMembers$ctl01$ctl03'
); // this code is added for each page in POST as __EVENTTARGET
for ($i = 0; $i < $number_of_pageinations; $i++) {
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_ENCODING => "", // handle …Run Code Online (Sandbox Code Playgroud) 我已经看到了关于抓取ajax的这个问题,但是那里没有提到python.我考虑过使用scrapy,我相信他们有一些关于这个主题的文档,但是你可以看到网站已关闭.所以我不知道该怎么做.我想做以下事情:
我只有一个url,example.com你通过点击提交从一个页面到另一个页面,url不会改变,因为他们使用ajax来显示内容.我想刮掉每个页面的内容,怎么做?
让我们说我只想刮掉数字,除了scrapy还有什么可以做到的吗?如果没有,你会给我一个关于如何做到的片段,只是因为他们的网站已关闭,所以我无法访问文档.
Python是否有提供JavaScript支持的屏幕抓取库?
我一直在使用pycurl来处理简单的HTML请求,而Java的HtmlUnit则用于需要JavaScript支持的更复杂的请求.
理想情况下,我希望能够完成Python的所有工作,但我没有遇到任何允许我这样做的库.它们存在吗?
我希望能够运行JavaScript并使用PHP获得结果,并且想知道是否有一个PHP库允许我解析它.我的第一个想法是使用node.js,但由于node.js可以访问套接字,文件和东西,我认为我宁愿避免这种情况.
理由:我正在使用PHP进行屏幕抓取,并且遇到了很多场景,其中数据是由前端的JavaScript生成的,我希望避免编写专门的过滤函数来基于每个案例对JavaScript进行操作,因为花了很多时间.更一般的情况是直接解析JavaScript.
Downvoting:我真的没有看到这个问题有什么争议,现代网络爬虫已经知道了,唯一的区别是它们往往不是用PHP编写的.[1]
javascript php screen-scraping serverside-javascript node.js
screen-scraping ×10
javascript ×3
php ×3
python ×3
web-scraping ×3
curl ×2
mechanize ×2
node.js ×2
ajax ×1
amazon-ec2 ×1
asp.net ×1
html ×1
htmlunit ×1
httprequest ×1
pycurl ×1
regex ×1
ruby ×1
scrapy ×1
spidermonkey ×1
winapi ×1
windows ×1