标签: screen-scraping

用于Python的无头浏览器(需要Javascript支持!)

我需要一个相当容易使用的无头浏览器(我仍然是相当新的Python和一般的编程),这将允许我导航到一个页面,登录到需要Javascript的表单,然后通过以下方式刮擦生成的网页搜索符合特定条件的结果,单击复选框,然后单击以下载文件.所有这些都需要Javascript.

我听到无头浏览器是我想要的 - 需求/偏好是我能够从Python运行它,并且最好是生成的脚本可以通过py2exe编译(我正在为其他用户编写这个程序).

到目前为止风车看起来很像我想要的,但我不确定.

任何想法赞赏!

javascript python screen-scraping headless-browser

52
推荐指数
4
解决办法
4万
查看次数

jsoup发布和cookie

我正在尝试使用jsoup登录网站,然后抓取信息,我遇到问题,我可以成功登录并从index.php创建一个文档,但我无法在网站上获取其他页面.我知道我需要在发布后设置一个cookie,然后在我尝试在网站上打开另一个页面时加载它.但是我该怎么做?以下代码允许我登录并获取index.php

Document doc = Jsoup.connect("http://www.example.com/login.php")
               .data("username", "myUsername", 
                     "password", "myPassword")
               .post();
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用apache httpclient来做到这一点,但我不想这样做.

java screen-scraping jsoup

49
推荐指数
2
解决办法
6万
查看次数

从Python执行Javascript

我有使用xpath爬行的HTML网页.在etree.tostring某个节点的给我这个字符串:

<script>
<!--
function escramble_758(){
  var a,b,c
  a='+1 '
  b='84-'
  a+='425-'
  b+='7450'
  c='9'
  document.write(a+c+b)
}
escramble_758()
//-->
</script>
Run Code Online (Sandbox Code Playgroud)

我只需要输出escramble_758().我可以写一个正则表达式来弄清楚整个事情,但我希望我的代码保持整洁.什么是最好的选择?

我正在浏览以下库,但我没有看到确切的解决方案.他们中的大多数都试图模仿浏览器,使事情变得缓慢.

编辑:一个例子将是伟大的..(准系统会做)

javascript python screen-scraping

46
推荐指数
6
解决办法
8万
查看次数

如何向下滚动Phantomjs以加载动态内容

我试图从用户向下滚动到底部(无限滚动)动态生成内容的页面中抓取链接.我曾尝试用Phantomjs做不同的事情但不能收集第一页以外的链接.让我们说加载内容的底部元素具有类.has-more-items.它在滚动期间加载最终内容之前可用,然后在DOM中变为不可用(显示:无).以下是我试过的事情 -

  • 之后将viewportSize设置为较大的高度 var page = require('webpage').create();

page.viewportSize = {width:1600,height:10000,};

  • 使用page.scrollPosition = { top: 10000, left: 0 }内部,page.open但没有效果像 -
page.open('http://example.com/?q=houston', function(status) {
   if (status == "success") {
      page.scrollPosition = { top: 10000, left: 0 };  
   }
});
Run Code Online (Sandbox Code Playgroud)
  • 也试过把它放在page.evaluate功能内但是给出了

参考错误:找不到变量页面

  • 尝试使用jQuery和JS代码page.evaluate,page.open但没有用 -

$("html,body").animate({scrollTop:$(document).height()},10,function(){// console.log('check for execution');});

既然如此,也在里面document.ready.类似的JS代码 -

window.scrollBy(0,10000)
Run Code Online (Sandbox Code Playgroud)

既然如此,也在里面 window.onload

我现在真的被打了两天而且找不到方法.任何帮助或提示将不胜感激.

更新

我在https://groups.google.com/forum/?fromgroups=#!topic/phantomjs/8LrWRW8ZrA0找到了一段有用的代码

var hitRockBottom = false; while (!hitRockBottom) {
    // Scroll the page …
Run Code Online (Sandbox Code Playgroud)

javascript dom screen-scraping web-scraping phantomjs

46
推荐指数
1
解决办法
3万
查看次数

Linux上无头,可编写脚本的Firefox/Webkit?

我希望自动化一些网络交互,即从安全网站定期下载文件.这主要涉及输入我的用户名/密码并导航到相应的URL.

我在Python中尝试过简单的脚本,然后是更复杂的脚本,只是发现这个特定的网站正在使用一些讨厌的基于javascript和flash的机制进行登录,渲染我的方法毫无用处.

然后我尝试了HTMLUnit,但这似乎也不想工作.我怀疑使用Flash是个问题.

我真的不想再考虑它,所以我倾向于编写一个实际的浏览器脚本来登录并获取我需要的文件.

要求是:

  • 在linux服务器上运行(即没有X运行).如果我真的需要让XI能够做到这一点,但我不会高兴.
  • 要可靠.我想开始这件事,再也不去想它了.
  • 可编写脚本.没有什么太复杂,但我应该能够告诉浏览器采取的各种步骤和访问页面.

对于无头,无X脚本的浏览器,有什么好的工具包吗?你有没有尝试过这样的事情?如果有的话,你有没有任何智慧的话语?

firefox screen-scraping webkit headless-browser

45
推荐指数
4
解决办法
2万
查看次数

屏幕抓取:绕过"HTTP错误403:robots.txt禁止请求"

有办法解决以下问题吗?

httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
Run Code Online (Sandbox Code Playgroud)

是唯一的方法来联系网站所有者(barnesandnoble.com)..我正在建立一个网站,将带来更多的销售,不知道为什么他们会拒绝在一定深度访问.

我在Python2.6上使用了mechanize和BeautifulSoup.

希望能够解决问题

python screen-scraping mechanize beautifulsoup http-status-code-403

45
推荐指数
4
解决办法
4万
查看次数

使用jQuery进行简单的屏幕刮擦

我一直在玩使用jQuery的简单屏幕刮板的想法,我想知道以下是否可行.

我有简单的HTML页面,并尝试(如果可能的话)从另一个页面中获取所有列表项的内容,如下所示:

主页:

<!-- jQuery -->
<script type='text/javascript'>
$(document).ready(function(){
$.getJSON("[URL to other page]",
  function(data){

    //Iterate through the <li> inside of the URL's data
    $.each(data.items, function(item){
      $("<li/>").value().appendTo("#data");
    });

  });
});
</script>

<!-- HTML -->
<html>
    <body>
       <div id='data'></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

其他页面:

//Html
<body>
    <p><b>Items to Scrape</b></p>   
    <ul>
        <li>I want to scrape what is here</li>
        <li>and what is here</li>
        <li>and here as well</li>
        <li>and append it in the main page</li>
    </ul>
</body>
Run Code Online (Sandbox Code Playgroud)

那么,是否可以使用jQuery从外部页面中提取所有列表项内容并将它们附加到div中?

javascript jquery screen-scraping

42
推荐指数
5
解决办法
9万
查看次数

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

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

python screen-scraping

40
推荐指数
4
解决办法
9万
查看次数

如何将HTML表格刮到CSV?

问题

我在工作中使用了一个工具,可以让我查询并获取HTML信息表.我没有任何类型的后端访问权限.

如果我可以将它放入电子表格进行排序,平均等,那么很多这些信息会更有用.如何将这些数据屏蔽到CSV文件?

我的第一个想法

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

解决方案

是的,伙计们,它真的像复制和粘贴一样容易.我不觉得傻.

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

screen-scraping

40
推荐指数
5
解决办法
8万
查看次数

如果对象也有其他类,Beautiful Soup也找不到CSS类

如果网页上有<div class="class1"><p class="class1">,然后soup.findAll(True, 'class1')就会发现他们两个.

<p class="class1 class2">但是,如果它有,它将无法找到.如何找到具有某个类的所有对象,无论它们是否还有其他类?

python screen-scraping beautifulsoup

40
推荐指数
3
解决办法
1万
查看次数