python获取动态网站上面的动态加载的数据(初级)
2017-08-12 20:54
423 查看
我们在处理一些网站数据的时候,有时候我们需要的数据很多都是动态加载的,而不都是静态的,以下以一个实例来介绍简单的获取动态数据,首先申明本人小白,还在学习python中,这个方法还是比较笨拙的,但是对于初学者还是需要知道的。
首先我们的要求是获取下面文章的参考文献:
刚刚开始,我的想法是使用lxml、BeatifulSoup、正则表达式来处理,这几个是处理静态网站的常用方法,查看网页源码我们会发现相应的div里面是空,也就是说上面的数据不是静态的,而是后面动态加载的,利用googl浏览器可以看到:
标记的三个对应了网站里面的相似文献、参考文献、引证文献,我们需要的是参考文献,所以点击第二个:
我们可以看到数据就在里面,然后点击Header,复制里面的URL:
利用下面的代码就可以获取相应的数据了:
#-*- coding:utf-8 -*- import requests url='http://xueshu.baidu.com/usercenter/data/schpaper?callback=jQuery110208239584223582068_1502539053728&wd=citepaperuri%3A(17d24f9533609a132a16703fde60ce19)&req_url=http%3A%2F%2Fwww.oalib.com%2Fpaper%2F4015889&type=reference&rn=10&page_no=1' data=requests.get(url) print data
但是如果要获取所有的参考文献怎么办,我们不能一个链接一个链接的复制,那不就特别麻烦,下面是代码的改进,首先我们要知道总共有多少页参考文献,也就是URL里面的page_no的·值,以下为改进的代码:(其实我们也可以直接估计有50页参考文献,然后使用try。。。except。。。来获取异常也是可以的)
#-*- coding:utf-8 -*- import requests n=相关页数 url='http://xueshu.baidu.com/usercenter/data/schpaper?callback=jQuery110208239584223582068_1502539053728&wd=citepaperuri%3A(17d24f9533609a132a16703fde60ce19)&req_url=http%3A%2F%2Fwww.oalib.com%2Fpaper%2F4015889&type=reference&rn=10&page_no=' for i in range(1,n+1): data=requests.get(url+str(i)) print data
返回值是json格式的,剩下的就是处理json格式了(记得除去返回的多余数据),参见:http://www.cnblogs.com/ybf-yyj/articles/7351580.html。
以下贴上所有代码:
#-*- coding:utf-8 -*- import requests import re import json def get_reference(url): data=requests.get(url) json_datas=data.content #使用贪婪算法的正则表达式获取json类型的字符串 json_data = re.compile(r"{.*}") json_data = json_data.search(json_datas).group() # 将获取的json字符串转化为字典 title_data=json.loads(json_data) n=title_data.get('data').get("resultList") for i in range(0,len(n)): try: print 'reference:', print n[i].get('meta_di_info').get('sc_title')[0] for i in n[i].get('meta_di_info').get('sc_author'): print i.get('sc_name')[1]+u',', print '\n' except: print i n=4 url='http://xueshu.baidu.com/usercenter/data/schpaper?callback=jQuery110204974031490917943_1502604841329&wd=citepaperuri%3A(0689fe98fd34a1aac82d41225ad9ceca)&req_url=http%3A%2F%2Feuropepmc.org%2Fabstract%2Fmed%2F24235252&type=reference&rn=10&page_no=' for i in range(1,n+1): get_reference(url+str(i))
相关文章推荐
- python获取动态网站上面的动态加载的数据(selenium+Firefox)
- python3 网络爬虫(二)利用get请求获取网页的动态加载数据
- selenium自动化测试工具开发python爬虫-动态加载页面数据获取
- python3 网络爬虫(三)利用post请求获取网页的动态加载数据
- Jquery chosen动态设置值实例介绍 select Ajax动态加载数据 设置chosen和获取他们选中的值
- Python selenium爬虫抓取船舶网站数据(动态页面)
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- Python爬虫实战--(三)获取网页中的动态数据
- python如何获取javascript动态产生的数据
- python selenium 获取动态网页数据
- echarts画圆环统计图并加载动态数据 (ajax获取数据)
- DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
- python3 scrapy 使用PhantomJS作为middlewares爬取动态加载的数据
- python3实践-从网站获取数据(Carbon Market Data-BJ) (pandas,bs4)
- 从数据库获取数据动态加载给echarts饼图
- 获取金融数据的python接口网站
- 【原创】python爬虫获取网站数据并存入本地数据库
- Python PhatomJS 和Selenium动态加载页面 获取图片内容
- Python 爬虫 PhantomJs 获取JS动态数据
- 利用js将ajax获取到的后台数据动态加载至网页中的方法