python爬动态
❶ 如何用python爬取js动态生成内容的页面
抓取js动态生成的内容的页面有两种基本的解决方案
1用dryscrape库动态抓取页面
js脚本是通过浏览器来执行并返回信息的,所以,抓取js执行后的页面,一个最直接的方式就是用python模拟浏览器的行为。WebKit 是一个开源的浏览器引擎,python提供了许多库可以调用这个引擎,dryscrape便是其中之一,它调用webkit引擎来处理包含js等的网页!
2 selenium web测试框架
selenium是一个web测试框架,它允许调用本地的浏览器引擎发送网页请求,所以,它同样可以实现抓取页面的要求。
❷ 如何用Python爬取动态加载的网页数据
动态网页抓取都是典型的办法
直接查看动态网页的加载规则。如果是ajax,则将ajax请求找出来给python。 如果是js去处后生成的URL。就要阅读JS,搞清楚规则。再让python生成URL。这就是常用办法
办法2,使用python调用webkit内核的,IE内核,或者是firefox内核的浏览器。然后将浏览结果保存下来。通常可以使用浏览器测试框架。它们内置了这些功能
办法3,通过http proxy,抓取内容并进行组装。甚至可以嵌入自己的js脚本进行hook. 这个方法通常用于系统的反向工程软件
❸ python爬虫怎么获取动态的网页源码
一个月前实习导师布置任务说通过网络爬虫获取深圳市气象局发布的降雨数据,网页如下:
心想,爬虫不太难的,当年跟zjb爬煎蛋网无(mei)聊(zi)图的时候,多么清高。由于接受任务后的一个月考试加作业一大堆,导师也不催,自己也不急。
但是,导师等我一个月都得让我来写意味着这东西得有多难吧。。。今天打开一看的确是这样。网站是基于Ajax写的,数据动态获取,所以无法通过下载源代码然后解析获得。
从某不良少年写的抓取淘宝mm的例子中收到启发,对于这样的情况,一般可以同构自己搭建浏览器实现。phantomJs,CasperJS都是不错的选择。
导师的要求是获取过去一年内深圳每个区每个站点每小时的降雨量,执行该操作需要通过如上图中的历史查询实现,即通过一个时间来查询,而这个时间存放在一个hidden类型的input标签里,当然可以通过js语句将其改为text类型,然后执行send_keys之类的操作。然而,我失败了。时间可以修改设置,可是结果如下图。
为此,仅抓取实时数据。选取python的selenium,模拟搭建浏览器,模拟人为的点击等操作实现数据生成和获取。selenium的一大优点就是能获取网页渲染后的源代码,即执行操作后的源代码。普通的通过 url解析网页的方式只能获取给定的数据,不能实现与用户之间的交互。selenium通过获取渲染后的网页源码,并通过丰富的查找工具,个人认为最好用的就是find_element_by_xpath("xxx"),通过该方式查找到元素后可执行点击、输入等事件,进而向服务器发出请求,获取所需的数据。
[python]view plain
#coding=utf-8
fromtestStringimport*
fromseleniumimportwebdriver
importstring
importos
fromselenium.webdriver.common.keysimportKeys
importtime
importsys
default_encoding='utf-8'
ifsys.getdefaultencoding()!=default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
district_navs=['nav2','nav1','nav3','nav4','nav5','nav6','nav7','nav8','nav9','nav10']
district_names=['福田区','罗湖区','南山区','盐田区','宝安区','龙岗区','光明新区','坪山新区','龙华新区','大鹏新区']
flag=1
while(flag>0):
driver=webdriver.Chrome()
driver.get("hianCe/")
#选择降雨量
driver.find_element_by_xpath("//span[@id='fenqu_H24R']").click()
filename=time.strftime("%Y%m%d%H%M",time.localtime(time.time()))+'.txt'
#创建文件
output_file=open(filename,'w')
#选择行政区
foriinrange(len(district_navs)):
driver.find_element_by_xpath("//div[@id='"+district_navs[i]+"']").click()
#printdriver.page_source
timeElem=driver.find_element_by_id("time_shikuang")
#输出时间和站点名
output_file.write(timeElem.text+',')
output_file.write(district_names[i]+',')
elems=driver.find_elements_by_xpath("//span[@onmouseover='javscript:changeTextOver(this)']")
#输出每个站点的数据,格式为:站点名,一小时降雨量,当日累积降雨量
foreleminelems:
output_file.write(AMonitorRecord(elem.get_attribute("title"))+',')
output_file.write(' ')
output_file.close()
driver.close()
time.sleep(3600)
- 文件中引用的文件testString只是修改输出格式,提取有效数据。
#Encoding=utf-8
defOnlyCharNum(s,oth=''):
s2=s.lower()
fomart=',.'
forcins2:
ifnotcinfomart:
s=s.replace(c,'')
returns
defAMonitorRecord(str):
str=str.split(":")
returnstr[0]+","+OnlyCharNum(str[1])
- 一小时抓取一次数据,结果如下:
[python]view plain
❹ 如何用Python抓取动态页面信息
下面开始说一下本文抓取动态页面数据的相关工具和库:
1. python 2.7
2. pyqt
3. spynner (在安装过程中,其他的一些依赖库也会自动上网下载安装)
4. BeautifulSoup
5. ide工具是pycharm(当然这个只是个人喜好,也可以使用其他的ide工具)
以上几个工具都可以网络找到,python现在出了3.x版本的,但是由于众多第三方库或架构都没有兼容,并且后续要使用到的爬虫框架scrapy也是没有支持3.x版本,因此还是建议使用2.7版本吧。
spynner和BeautifulSoup下载后,都可以cd到解压出来的目录,然后使用python setup.py install来完成安装,需要注意的是spynner依赖pyqt,所以一定要安装pyqt,否则无法使用spynner。
下面使用一个具体是例子来说明一下spynner和BeautifulSoup的使用,我们就以爬取京东页面上的一些产品数据来说明如何爬取动态页面数据(当然,如果我们过于频繁的爬京东,估计还是有可能被京东将我们ip拉黑的)。
❺ Python如何爬取动态数据实现方法
你指的是动态渲染生成的页面的爬取吧,类似于微博的下拉刷新这种?如果是,分析找到它的ajax请求,一般是xhr。其实也可以考虑使用selinum模块(但愿我没拼错这个模块名)
❻ 如何用Python爬虫抓取JS动态筛选内容
打开浏览器,以google chrome为例,输入你上面的网址。
然后按F12打开调试窗口,然后尝试勾选左边某一个选项,马上可以看到右边的调试窗口有东西输出。
找到第一个输出的行,点击header,可以看到每一个都是用的post方法。
所以只需要构造相应的header并post上去,就可以得到你想要的数据了。
而这个发放返回的是json数据,然后编码成dict格式 提取出数据就可以了。
❼ python爬虫,抓取动态内容,判断后更新变量
把每次抓取的结果存储起来,然后与上一次的结果比较不就可以了。
❽ python3 怎样爬取动态加载的网页信息
方法1
寻找页面中的xhr请求, 并得到实际的请求参数. 直接获取相关搜索的请求返回代码, 然后进行数据整理.
方法2
模拟浏览器操作, 比如使用Selenium 模块.
❾ python如何爬取动态加载的网页数据,例如我的打工网企业链接(需要底部的加载更多才会显示)
content=urllib.urlopen(url).read()
forxin['LabelWageDes','LabelWorkDes','LabelEnterpriseDesc']:
pattern=re.compile(r'<spanid="ctl00_ContentPlaceHolder1_'+x+'">(.*?)</span></div>')
forvalueinpattern.findall(content):
split_values=value.split('<br/>')
forlineinsplit_values:
printline
❿ Python爬取动态生成的网页(框架)需要具备哪些知识或者使用哪些库
1、抓取网页,模拟登陆等背后的通用的逻辑和原理;
2、以提取songtaste网页中标题为例,详解如何抓取网站并提取网页内容;
3、以模拟登陆网络为例,详解如何模拟登陆网站;
4、以抓取网易博客帖子中的最近读者信息为例,详解如何抓取动态网页中的内容;
5、详解了在模拟登陆和抓取动态网页过程中,如何用对应的网页分析工具,如IE9的F12,Chrome的Ctrl+Shift+J,Firefox的Firebug,去分析出对应的逻辑;
6、针对抓取网站,模拟登陆,抓取动态网页,全部给出了完整的可用的,多种语言的示例代码:Python,C#,Java,Go等。