标签: web-scraping

如何向下滚动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万
查看次数

如何刮一个需要使用python和beautifulsoup登录的网站?

如果我想先刮一个需要用密码登录的网站,怎样才能开始使用beautifulsoup4库用python抓它?以下是我对不需要登录的网站所做的工作.

from bs4 import BeautifulSoup    
import urllib2 
url = urllib2.urlopen("http://www.python.org")    
content = url.read()    
soup = BeautifulSoup(content)
Run Code Online (Sandbox Code Playgroud)

如何更改代码以适应登录?假设我要抓的网站是一个需要登录的论坛.一个例子是http://forum.arduino.cc/index.php

python beautifulsoup web-scraping

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

csv.writer在单独的列/单元格中写入单词的每个字符

目标:从所有行内的锚标记中提取文本models并将其放入csv中.

我正在尝试这段代码:

with open('Sprint_data.csv', 'ab') as csvfile:
  spamwriter = csv.writer(csvfile)
  models = soup.find_all('li' , {"class" : "phoneListing"})

  for model in models:

      model_name = unicode(u' '.join(model.a.stripped_strings)).encode('utf8').strip()
      spamwriter.writerow(unicode(u' '.join(model.a.stripped_strings)).encode('utf8').strip())
Run Code Online (Sandbox Code Playgroud)

除了csv中的每个单元格只包含一个字符外,它工作正常.

像这样:

|  S  |  A  |   M  |   S  |   U   |  N  |   G   |
Run Code Online (Sandbox Code Playgroud)

代替:

|SAMSUNG|
Run Code Online (Sandbox Code Playgroud)

当然我错过了什么.但是什么?

python csv web-scraping

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

如何在Python 3中打印异常?

现在,我在except Exception:条款中捕获了异常,并且做了print(exception).结果不提供任何信息,因为它始终打印<class 'Exception'>.我知道这曾经在python 2中工作,但我如何在python3中做到这一点?

python exception web-scraping python-3.x

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

网页抓取 - 如何识别网页上的主要内容

鉴于新闻文章网页(来自任何主要新闻来源,如时代或布隆伯格),我想确定该页面上的主要文章内容,并抛弃其他misc元素,如广告,菜单,侧边栏,用户评论.

什么是这样做的通用方法,适用于大多数主要新闻网站?

什么是数据挖掘的好工具或库?(最好是基于python)

python webpage html-parsing web-scraping

44
推荐指数
9
解决办法
2万
查看次数

刮整个网站

我正在寻找一个程序来提取和下载整个公司网站的建议.

该网站由一个已经停止工作的CMS提供支持并且修复它是昂贵的,我们能够重新开发该网站.

因此,我想将整个网站视为简单的html/css/image内容,并根据需要对其进行细微更新,直到新网站出现.

任何推荐?

html web-scraping

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

Selenium-Debugging:元素在点(X,Y)处不可点击

我试图通过Selenium 刮掉这个网站.

我想点击"下一页"按钮,为此我这样做:

 driver.find_element_by_class_name('pagination-r').click()
Run Code Online (Sandbox Code Playgroud)

它适用于许多页面但不适用于所有页面,我收到此错误

WebDriverException: Message: Element is not clickable at point (918, 13). Other element would receive the click: <div class="linkAuchan"></div>
Run Code Online (Sandbox Code Playgroud)

总是为这个页面

我读了这个问题

我试过这个

driver.implicitly_wait(10)
el = driver.find_element_by_class_name('pagination-r')
action = webdriver.common.action_chains.ActionChains(driver)
action.move_to_element_with_offset(el, 918, 13)
action.click()
action.perform()
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误

python selenium web-scraping selenium-firefoxdriver selenium-webdriver

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

使用Python将html转换为文本

我试图使用Python将html块转换为文本.

输入:

<div class="body"><p><strong></strong></p>
<p><strong></strong>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. <a href="http://example.com/" target="_blank" class="source">Some Link</a> Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p></div>
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Lorem ipsum dolor坐在amet,consectetuer adipiscing …

python beautifulsoup web-scraping

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

如何获取scrapy失败的URL?

我是scrapy的新手,它是我知道的惊人的爬虫框架!

在我的项目中,我发送了超过90,000个请求,但其中一些请求失败了.我将日志级别设置为INFO,我只能看到一些统计信息,但没有详细信息.

2012-12-05 21:03:04+0800 [pd_spider] INFO: Dumping spider stats:
{'downloader/exception_count': 1,
 'downloader/exception_type_count/twisted.internet.error.ConnectionDone': 1,
 'downloader/request_bytes': 46282582,
 'downloader/request_count': 92383,
 'downloader/request_method_count/GET': 92383,
 'downloader/response_bytes': 123766459,
 'downloader/response_count': 92382,
 'downloader/response_status_count/200': 92382,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2012, 12, 5, 13, 3, 4, 836000),
 'item_scraped_count': 46191,
 'request_depth_max': 1,
 'scheduler/memory_enqueued': 92383,
 'start_time': datetime.datetime(2012, 12, 5, 12, 23, 25, 427000)}
Run Code Online (Sandbox Code Playgroud)

有没有办法获得更多细节报告?例如,显示那些失败的URL.谢谢!

python report scrapy web-scraping

39
推荐指数
6
解决办法
3万
查看次数

使用BeautifulSoup提取没有标签的文本

我的网页是这样的 -

<p>
  <strong class="offender">YOB:</strong> 1987<br/>
  <strong class="offender">RACE:</strong> WHITE<br/>
  <strong class="offender">GENDER:</strong> FEMALE<br/>
  <strong class="offender">HEIGHT:</strong> 5'05''<br/>
  <strong class="offender">WEIGHT:</strong> 118<br/>
  <strong class="offender">EYE COLOR:</strong> GREEN<br/>
  <strong class="offender">HAIR COLOR:</strong> BROWN<br/>
</p>
Run Code Online (Sandbox Code Playgroud)

我要提取的信息对每个人,并得到了YOB:1987,RACE:WHITE等....

我试过的是 -

subc = soup.find_all('p')
subc1 = subc[1]
subc2 = subc1.find_all('strong')
Run Code Online (Sandbox Code Playgroud)

但是,这给我的唯一的值YOB:,RACE:

有没有一种方法,我可以得到的数据YOB:1987,RACE:WHITE格式?

python beautifulsoup web-scraping

39
推荐指数
2
解决办法
11万
查看次数