我试图从用户向下滚动到底部(无限滚动)动态生成内容的页面中抓取链接.我曾尝试用Phantomjs做不同的事情但不能收集第一页以外的链接.让我们说加载内容的底部元素具有类.has-more-items.它在滚动期间加载最终内容之前可用,然后在DOM中变为不可用(显示:无).以下是我试过的事情 -
var page = require('webpage').create();page.viewportSize = {width:1600,height:10000,};
page.scrollPosition = { top: 10000, left: 0 }内部,page.open但没有效果像 -Run Code Online (Sandbox Code Playgroud)page.open('http://example.com/?q=houston', function(status) { if (status == "success") { page.scrollPosition = { top: 10000, left: 0 }; } });
page.evaluate功能内但是给出了参考错误:找不到变量页面
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) 如果我想先刮一个需要用密码登录的网站,怎样才能开始使用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
目标:从所有行内的锚标记中提取文本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)
当然我错过了什么.但是什么?
现在,我在except Exception:条款中捕获了异常,并且做了print(exception).结果不提供任何信息,因为它始终打印<class 'Exception'>.我知道这曾经在python 2中工作,但我如何在python3中做到这一点?
鉴于新闻文章网页(来自任何主要新闻来源,如时代或布隆伯格),我想确定该页面上的主要文章内容,并抛弃其他misc元素,如广告,菜单,侧边栏,用户评论.
什么是这样做的通用方法,适用于大多数主要新闻网站?
什么是数据挖掘的好工具或库?(最好是基于python)
我正在寻找一个程序来提取和下载整个公司网站的建议.
该网站由一个已经停止工作的CMS提供支持并且修复它是昂贵的,我们能够重新开发该网站.
因此,我想将整个网站视为简单的html/css/image内容,并根据需要对其进行细微更新,直到新网站出现.
任何推荐?
我试图通过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
我试图使用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 …
我是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.谢谢!
我的网页是这样的 -
<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格式?
web-scraping ×10
python ×8
csv ×1
dom ×1
exception ×1
html ×1
html-parsing ×1
javascript ×1
phantomjs ×1
python-3.x ×1
report ×1
scrapy ×1
selenium ×1
webpage ×1