导航:首页 > 编程语言 > phpphantomjs爬虫

phpphantomjs爬虫

发布时间:2022-12-15 16:20:48

1. 如何用php抓取js生成的页面

简单的说,做不到。
如果要抓取JS生成的页面,可以考虑用PhantomJS。
其原理大概就是在你的服务器上开了一个webkit内核的浏览器,然后在浏览器里面打开页面,在页面load之后,你可以通过API获取页面上的DOM,同时也可以进行点击之类的操作。

如何使用,不是这里面能说清楚的。还是自己差一些资料吧。

2. 使用phantomjs爬取页面内容时,内存占用过多如何解决

怎说,我当时写爬虫的时候,也是开了多台gecodriver的进程,但是我用python监控了cpu的资源管理,占用率太高了我就kill掉一部分的进程,如果是进程本身就死掉当然会kill并且有重启机制。当然最后稳定下来确定了每台机器开几个进程利用率很高。

3. Python+Selenium+PhantomJs爬虫 怎么抓取弹出新标签页的内容

在工程中新建一个Python Package(包),右键点击src, New>PydevPackage,选择源文件路径及输入包名: 在_init_.py,输入print (“Hello World”),按F9即可看到输出结果,说明开发环境安装成功!

4. 安装phantomjs时出现的一个问题

phantomjs不需要像python模块那样安装,直接进入官网下载页面(Python爬虫利器四之PhantomJS的用法)

5. 有人用 Phantomjs casper 做爬虫吗发现它太慢,如何提高性能

phantomjs实际上就是一个浏览器,只是不显示界面,可以执行页面的js脚本等。
jsdom主要是方便解析html文本,相当于对字符串进行分析。

phantomjs对资源的要求和消耗都比较大,如果需要的内容从网页源代码中可以解析出来,推荐用jsdom,如果页面复杂,推荐用phantomjs

6. 如何用python+selenium+phantomjs获得一个网页的动态生成的html代码

一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览器PhantomJS来抓取javascript渲染的页面,下面实现一个简单的爬取

环境搭建

准备工具:python3.5,selenium,phantomjs

我的电脑里面已经装好了python3.5

安装Selenium

1pip3 install selenium

安装Phantomjs

按照系统环境下载phantomjs,下载完成之后,将phantomjs.exe解压到python的script文件夹

使用selenium+phantomjs实现简单爬虫

123456789fromselenium import webdriverdriver = webdriver.PhantomJS()driver.get('http.com') #加载网页data = driver.page_source #获取网页文本driver.save_screenshot('1.png') #截图保存print(data)driver.quit()

selenium+phantomjs的一些使用方法

设置请求头里的user-Agent

123456789101112fromselenium import webdriverfromselenium.webdriver.common.desired_capabilities import DesiredCapabilitiesdcap = dict(DesiredCapabilities.PHANTOMJS) #设置useragentdcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 ') #根据需要设置具体的浏览器信息driver = webdriver.PhantomJS(desired_capabilities=dcap) #封装浏览器信息driver.get('h.com') #加载网页data = driver.page_source #获取网页文本driver.save_screenshot('1.png') #截图保存print(data)driver.quit()

请求超时设置

webdriver类中有三个和时间相关的方法:

1.pageLoadTimeout 设置页面完全加载的超时时间,完全加载即完全渲染完成,同步和异步脚本都执行完

2.setScriptTimeout 设置异步脚本的超时时间

3.implicitlyWait 识别对象的智能等待时间

1234567fromselenium import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5) #设置超时时间driver.get('htt.com')print(driver.title)driver.quit()

设置浏览器窗口大小

调用启动的浏览器不是全屏的,有时候会影响我们的某些操作,所以我们可以设置全屏

12driver.maximize_window() #设置全屏driver.set_window_size('480','800') #设置浏览器宽480,高800

元素定位

import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5)driver.get('i.com')try:driver.get('.com')driver.find_element_by_id('kw') # 通过ID定位driver.find_element_by_class_name('s_ipt') # 通过class属性定位driver.find_element_by_name('wd') # 通过标签name属性定位driver.find_element_by_tag_name('input') # 通过标签属性定位driver.find_element_by_css_selector('#kw') # 通过css方式定位driver.find_element_by_xpath("//input[@id='kw']") # 通过xpath方式定位driver.find_element_by_link_text("贴吧") # 通过xpath方式定位print(driver.find_element_by_id('kw').tag_name ) # 获取标签的类型except Exceptionase:print(e)driver.quit()

操作浏览器前进或后退

import webdriverdriver = webdriver.PhantomJS()try:driver.get('httai.com') #访问网络首页driver.save_screenshot('1.png')driver.get('ht.sina.com.cn') #访问新浪首页driver.save_screenshot('2.png')driver.back() #回退到网络首页driver.save_screenshot('3.png')driver.forward() #前进到新浪首页driver.save_screenshot('4.png')except Exceptionase:print(e)driver.quit()

好文要顶关注我收藏该文

7. 如何使用nodejs做爬虫程序

1、如果是定向爬取几个页面,做一些简单的页面解析,爬取效率不是核心要求,那么用什么语言差异不大。
当然要是页面结构复杂,正则表达式写得巨复杂,尤其是用过那些支持xpath的类库/爬虫库后,就会发现此种方式虽然入门门槛低,但扩展性、可维护性等都奇差。因此此种情况下还是推荐采用一些现成的爬虫库,诸如xpath、多线程支持还是必须考虑的因素。

2、如果是定向爬取,且主要目标是解析js动态生成的内容
此时候,页面内容是有js/ajax动态生成的,用普通的请求页面->解析的方法就不管用了,需要借助一个类似firefox、chrome浏览器的js引擎来对页面的js代码做动态解析。
此种情况下,推荐考虑casperJS+phantomjs或slimerJS+phantomjs ,当然诸如selenium之类的也可以考虑。

3、如果爬虫是涉及大规模网站爬取,效率、扩展性、可维护性等是必须考虑的因素时候
大规模爬虫爬取涉及诸多问题:多线程并发、I/O机制、分布式爬取、消息通讯、判重机制、任务调度等等,此时候语言和所用框架的选取就具有极大意义了。
PHP对多线程、异步支持较差,不建议采用。
NodeJS:对一些垂直网站爬取倒可以,但由于分布式爬取、消息通讯等支持较弱,根据自己情况判断。
Python:强烈建议,对以上问题都有较好支持。尤其是Scrapy框架值得作为第一选择。优点诸多:支持xpath;基于twisted,性能不错;有较好的调试工具;
此种情况下,如果还需要做js动态内容的解析,casperjs就不适合了,只有基于诸如chrome V8引擎之类自己做js引擎。
至于C、C++虽然性能不错,但不推荐,尤其是考虑到成本等诸多因素;对于大部分公司还是建议基于一些开源的框架来做,不要自己发明轮子,做一个简单的爬虫容易,但要做一个完备的爬虫挺难的。

像我搭建的微信公众号内容聚合的网站 就是基于Scrapy做的,当然还涉及消息队列等。可以参考下图:

具体内容可以参考 一个任务调度分发服务的架构

8. 爬虫 Selenium Chrome报错 PhantomJS正常

有可能是chrome浏览器自动升级了,和chromedriver的版本对应不上了
chromedriver和chrome浏览器是有版本对应关系的(直接双击chromedriver.exe可以看到版本号),根据下表去搜索对应版本的chromedriver放在python目录内即可:
chromedriver版本 支持的Chrome版本
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

9. 精通Python网络爬虫之网络爬虫学习路线

欲精通Python网络爬虫,必先了解网络爬虫学习路线,本篇经验主要解决这个问题。部分内容参考自书籍《精通Python网络爬虫》。

作者:韦玮

转载请注明出处

随着大数据时代的到来,人们对数据资源的需求越来越多,而爬虫是一种很好的自动采集数据的手段。

那么,如何才能精通Python网络爬虫呢?学习Python网络爬虫的路线应该如何进行呢?在此为大家具体进行介绍。

1、选择一款合适的编程语言

事实上,Python、PHP、JAVA等常见的语言都可以用于编写网络爬虫,你首先需要选择一款合适的编程语言,这些编程语言各有优势,可以根据习惯进行选择。在此笔者推荐使用Python进行爬虫项目的编写,其优点是:简洁、掌握难度低。

2、掌握Python的一些基础爬虫模块

当然,在进行这一步之前,你应当先掌握Python的一些简单语法基础,然后才可以使用Python语言进行爬虫项目的开发。

在掌握了Python的语法基础之后,你需要重点掌握一个Python的关于爬虫开发的基础模块。这些模块有很多可以供你选择,比如urllib、requests等等,只需要精通一个基础模块即可,不必要都精通,因为都是大同小异的,在此推荐的是掌握urllib,当然你可以根据你的习惯进行选择。

3、深入掌握一款合适的表达式

学会了如何爬取网页内容之后,你还需要学会进行信息的提取。事实上,信息的提取你可以通过表达式进行实现,同样,有很多表达式可以供你选择使用,常见的有正则表达式、XPath表达式、BeautifulSoup等,这些表达式你没有必要都精通,同样,精通1-2个,其他的掌握即可,在此建议精通掌握正则表达式以及XPath表达式,其他的了解掌握即可。正则表达式可以处理的数据的范围比较大,简言之,就是能力比较强,XPath只能处理XML格式的数据,有些形式的数据不能处理,但XPath处理数据会比较快。

4、深入掌握抓包分析技术

事实上,很多网站都会做一些反爬措施,即不想让你爬到他的数据。最常见的反爬手段就是对数据进行隐藏处理,这个时候,你就无法直接爬取相关的数据了。作为爬虫方,如果需要在这种情况下获取数据,那么你需要对相应的数据进行抓包分析,然后再根据分析结果进行处理。一般推荐掌握的抓包分析工具是Fiddler,当然你也可以用其他的抓包分析工具,没有特别的要求。

5、精通一款爬虫框架

事实上,当你学习到这一步的时候,你已经入门了。

这个时候,你可能需要深入掌握一款爬虫框架,因为采用框架开发爬虫项目,效率会更加高,并且项目也会更加完善。

同样,你可以有很多爬虫框架进行选择,比如Scrapy、pySpider等等,一样的,你没必要每一种框架都精通,只需要精通一种框架即可,其他框架都是大同小异的,当你深入精通一款框架的时候,其他的框架了解一下事实上你便能轻松使用,在此推荐掌握Scrapy框架,当然你可以根据习惯进行选择。

6、掌握常见的反爬策略与反爬处理策略

反爬,是相对于网站方来说的,对方不想给你爬他站点的数据,所以进行了一些限制,这就是反爬。

反爬处理,是相对于爬虫方来说的,在对方进行了反爬策略之后,你还想爬相应的数据,就需要有相应的攻克手段,这个时候,就需要进行反爬处理。

事实上,反爬以及反爬处理都有一些基本的套路,万变不离其宗,这些后面作者会具体提到,感兴趣的可以关注。

常见的反爬策略主要有:

IP限制

UA限制

Cookie限制

资源随机化存储

动态加载技术

……

对应的反爬处理手段主要有:

IP代理池技术

用户代理池技术

Cookie保存与处理

自动触发技术

抓包分析技术+自动触发技术

……

这些大家在此先有一个基本的思路印象即可,后面都会具体通过实战案例去介绍。

7、掌握PhantomJS、Selenium等工具的使用

有一些站点,通过常规的爬虫很难去进行爬取,这个时候,你需要借助一些工具模块进行,比如PhantomJS、Selenium等,所以,你还需要掌握PhantomJS、Selenium等工具的常规使用方法。

8、掌握分布式爬虫技术与数据去重技术

如果你已经学习或者研究到到了这里,那么恭喜你,相信现在你爬任何网站都已经不是问题了,反爬对你来说也只是一道形同虚设的墙而已了。

但是,如果要爬取的资源非常非常多,靠一个单机爬虫去跑,仍然无法达到你的目的,因为太慢了。

所以,这个时候,你还应当掌握一种技术,就是分布式爬虫技术,分布式爬虫的架构手段有很多,你可以依据真实的服务器集群进行,也可以依据虚拟化的多台服务器进行,你可以采用urllib+redis分布式架构手段,也可以采用Scrapy+redis架构手段,都没关系,关键是,你可以将爬虫任务部署到多台服务器中就OK。

至于数据去重技术,简单来说,目的就是要去除重复数据,如果数据量小,直接采用数据库的数据约束进行实现,如果数据量很大,建议采用布隆过滤器实现数据去重即可,布隆过滤器的实现在Python中也是不难的。

以上是如果你想精通Python网络爬虫的学习研究路线,按照这些步骤学习下去,可以让你的爬虫技术得到非常大的提升。

至于有些朋友问到,使用Windows系统还是Linux系统,其实,没关系的,一般建议学习的时候使用Windows系统进行就行,比较考虑到大部分朋友对该系统比较数据,但是在实际运行爬虫任务的时候,把爬虫部署到Linux系统中运行,这样效率比较高。由于Python的可移植性非常好,所以你在不同的平台中运行一个爬虫,代码基本上不用进行什么修改,只需要学会部署到Linux中即可。所以,这也是为什么说使用Windows系统还是Linux系统进行学习都没多大影响的原因之一。

本篇文章主要是为那些想学习Python网络爬虫,但是又不知道从何学起,怎么学下去的朋友而写的。希望通过本篇文章,可以让你对Python网络爬虫的研究路线有一个清晰的了解,这样,本篇文章的目的就达到了,加油!

本文章由作者韦玮原创,转载请注明出处。

阅读全文

与phpphantomjs爬虫相关的资料

热点内容
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151
伊克塞尔文档怎么进行加密 浏览:893
app转账是什么 浏览:163