pythonjson爬虫
① 如何通过网络爬虫获取网站数据
这里以python为例,简单介绍一下如何通过python网络爬虫获取网站数据,主要分为静态网页数据的爬埋山差取和动态网页数据的爬取,实验环境win10+python3.6+pycharm5.0,主要内容如下:
静态网页数据
这里的数据都嵌套在网页源码中,所以直接requests网页源码进行解析就行,下面我简单介绍一下,这里以爬取糗事网络上的数据为例:
1.首先,打开原网页,如下,这里假设要爬取的字段包括昵称、内容、好笑数和评论数:
接着查看网页源码,如下,可以看的出来,所有的数据都嵌套在网页中:
2.然后针对以上网页结构,我们就可以直接编写爬虫代码,解析网页并提取出我们需要的数据了,测试代码如下,非常简单,主要用到requests+BeautifulSoup组合,其中requests用于获取网页源码,BeautifulSoup用于解析网页提取数据:
点击运行这个程序,效果如下,已经成功爬取了到我们需要的数据:
动态网页数据
这里的数据都没有在网页源码中(所以直接请求页面是获取不到任何数据的),大部分情况下都是存储在一唯唯个json文件中,只有在网页更新的时候,才会加载数据,下面我简单介绍一下这种方式,这里以爬取人人贷上面的数据为例:
1.首先,打开原网页,如下,这里假设要爬取的数据包括年利率,借款标题,期限,金额和进度:
接着按F12调出开发者工具,依次点击“Network”->“XHR”,F5刷新页面,就可以找打动态加载的json文件,如下,也就是我们需要爬弯皮取的数据:
2.然后就是根据这个json文件编写对应代码解析出我们需要的字段信息,测试代码如下,也非常简单,主要用到requests+json组合,其中requests用于请求json文件,json用于解析json文件提取数据:
点击运行这个程序,效果如下,已经成功爬取到我们需要的数据:
至此,我们就完成了利用python网络爬虫来获取网站数据。总的来说,整个过程非常简单,python内置了许多网络爬虫包和框架(scrapy等),可以快速获取网站数据,非常适合初学者学习和掌握,只要你有一定的爬虫基础,熟悉一下上面的流程和代码,很快就能掌握的,当然,你也可以使用现成的爬虫软件,像八爪鱼、后羿等也都可以,网上也有相关教程和资料,非常丰富,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
② 怎么样python爬虫进行此网站爬取
是加密的,解密方法在JS里面可以弄出来。
首先要AES解密,可以【Python:import Crypto.Cipher.AES】包,解密mode是CFB,seed是"userId:"+uid+":seed"的SHA256值,解密的key是seed[0:24],iv是seed[len(seed)-16:]。
如果没有登录,uid就是用的"anyone",这时候的seed是"",也就是key为"61581AF471B166682A37EFE6",iv为"C8F203FCA312AAAB"。
解密后文件是压缩过的,解压即可得到一个JSON。这部分解压我没仔细看他的算法,好像是gzip,直接用【Python:import gzip】解压有点出错,可能没用对或者不是这个算法,你在研究一下。第二种投机的方法就是,可以通过【Python:import execjs】直接调用他的pako.js文件的JS的inflate()函数来解压这块。JS代码混淆后看起来是非常难懂的,使用这种做法可以不用太看懂加密的算法,效率当然写Python实现这个解密算法低1点咯。
最后的JSON再用【Python:import demjson】解析,text的value就是文档。
③ python鐖铏鎶链鍙浠ュ共浠涔
棣栧厛锛屾垜浠闇瑕佺煡阆扑粈涔堟槸鐖铏锛佹垜绗涓娆″惉鍒扮埇铏杩欎釜璇岖殑镞跺欙纴灏变互涓烘槸闾g岖埇琛岀殑鏄呜櫕锛屾兂𨱍冲ソ鍙绗...钖庢潵镓岖煡阆掳纴鏄涓绉岖绣缁滀笂镄勬暟鎹鎶揿彇宸ュ叿锛
缃戠粶鐖铏锛埚张琚绉颁负缃戦〉铚樿洓锛岀绣缁沧満鍣ㄤ汉锛屽湪FOAF绀惧尯涓闂达纴镟寸粡甯哥殑绉颁负缃戦〉杩介愯咃级锛屾槸涓绉嶆寜镦т竴瀹氱殑瑙勫垯锛岃嚜锷ㄥ湴鎶揿彇涓囩淮缃戜俊鎭镄勭▼搴忔垨钥呰剼链銆傚彟澶栦竴浜涗笉甯镐娇鐢ㄧ殑钖嶅瓧杩樻湁铓傝殎銆佽嚜锷ㄧ储寮曘佹ā𨰾熺▼搴忔垨钥呰爼铏銆
鐖铏鍙浠ュ仛浠涔堬纻
妯℃嫙娴忚埚櫒镓揿紑缃戦〉锛岃幏鍙栫绣椤典腑鎴戜滑𨱍宠佺殑闾i儴鍒嗘暟鎹銆
浠庢妧链灞傞溃𨱒ヨ村氨鏄锛 阃氲繃绋嫔簭妯℃嫙娴忚埚櫒璇锋眰绔欑偣镄勮屼负锛屾妸绔欑偣杩斿洖镄凥TML浠g爜/JSON鏁版嵁/浜岃繘鍒舵暟鎹(锲剧墖銆佽嗛) 鐖鍒版湰鍦帮纴杩涜屾彁鍙栬嚜宸遍渶瑕佺殑鏁版嵁锛屽瓨鏀捐捣𨱒ヤ娇鐢ㄣ
濡傛灉浣犱粩缁呜傚疗锛屽氨涓嶉毦鍙戠幇锛屾哕鐖铏銆佸︿範鐖铏镄勪汉瓒婃潵瓒婂氾纴涓鏂归溃锛屼簰镵旂绣鍙浠ヨ幏鍙栫殑鏁版嵁瓒婃潵瓒婂氾纴鍙︿竴鏂归溃锛屽儚 Python杩欐牱镄勭紪绋嬭瑷鎻愪緵瓒婃潵瓒婂氱殑浼樼宸ュ叿锛岃╃埇铏鍙桦缑绠鍗曘佸规槗涓婃坠銆
鍒╃敤鐖铏鎴戜滑鍙浠ヨ幏鍙栧ぇ閲忕殑浠峰兼暟鎹锛屼粠钥岃幏寰楁劅镐цよ瘑涓涓嶈兘寰楀埌镄勪俊鎭锛屾瘆濡傦细
鐭ヤ箮锛氱埇鍙栦紭璐ㄧ瓟妗堬纴涓轰綘绛涢夊嚭钖勮瘽棰树笅链浼樿川镄勫唴瀹广
娣桦疂銆佷含涓滐细鎶揿彇鍟嗗搧銆佽瘎璁哄强阌閲忔暟鎹锛屽瑰悇绉嶅晢鍝佸强鐢ㄦ埛镄勬秷璐瑰満鏅杩涜屽垎鏋愩
瀹夊眳瀹銆侀摼瀹讹细鎶揿彇鎴夸骇涔板崠鍙婄熷敭淇℃伅锛屽垎鏋愭埧浠峰彉鍖栬秼锷裤佸仛涓嶅悓鍖哄烟镄勬埧浠峰垎鏋愩
𨰾夊嬀缃戙佹櫤镵旓细鐖鍙栧悇绫昏亴浣崭俊鎭锛屽垎鏋愬悇琛屼笟浜烘墠闇姹傛儏鍐靛强钖璧勬按骞炽
闆鐞幂绣锛氭姄鍙栭洩鐞冮珮锲炴姤鐢ㄦ埛镄勮屼负锛屽硅偂绁ㄥ竞鍦鸿繘琛屽垎鏋愬拰棰勬祴绛夌瓑
鐖铏镄勫师鐞嗘槸浠涔堬纻
鍙戦佽锋眰 > 銮峰彇鍝嶅簲鍐呭 > 瑙f瀽鍐呭 > 淇濆瓨鏁版嵁
濡备笂镓绀猴纴鐖鍙栨暟鎹镄勬椂鍊椤氨鏄杩欎釜娴佺▼锛屾槸涓嶆槸寰堢亩鍗曞憿锛熸墍浠ョ敤鎴风湅鍒扮殑娴忚埚櫒镄勭粨鏋滃氨鏄鐢 HTML 浠g爜鏋勬垚镄勶纴鎴戜滑鐖铏灏辨槸涓轰简銮峰彇杩欎簺鍐呭癸纴阃氲繃鍒嗘瀽鍜岃繃婊 html 浠g爜锛屼粠涓銮峰彇鎴戜滑𨱍宠佽祫婧愩
④ python爬虫---爬取LOL云顶之弈数据
本来是想爬取之后作最佳羁绊组合推算,但是遇到知识点无法消化(知识图谱),所以暂时先不组合了,实力有限
库的安装
1.requests #爬取棋子数据
2.json #棋子数据为js动态,需使用json解析
3.BeautifulSoup
实战前先新建个lol文件夹作为工作目录,并创建子目录data,用于存放数据。
1.爬取数据,新建个py文件,用于爬取云顶数据,命念中塌名为data.py
1.1定义个req函数,方便读取。//需设定编码格式,否则会出现乱码
def Re_data(url):
re = requests.get(url)
re.encoding = 'gbk'
data = json.loads(re.text)
return data['data']
1.2定义个Get函数,用于读取数据并使用保存函数进行保存数据,保存格式为json。
def Get_data():
# 获取数据并保存至data目录
base_url = 'https://game.gtimg.cn/images/lol/act/img/tft/js/'培灶
chess = Re_data(base_url + 'chess.js')
race = Re_data(base_url + 'race.js')
job = Re_data(base_url + 'job.js')
equip = Re_data(base_url + 'equip.js')
Save_data(chess,race,job,equip)
1.3定义save函数实现读取的数据进行文件保存,保存目录为工作目录下的data文件夹仔圆。
def Save_data(t_chess,t_race,t_job,t_equip):
with open('./data/chess.json','w') as f:
json.mp(t_chess,f,indent='\t')
with open('./data/race.json','w') as f:
json.mp(t_race,f,indent='\t')
with open('./data/job.json','w') as f:
json.mp(t_job,f,indent='\t')
with open('./data/equip.json','w') as f:
json.mp(t_equip,f,indent='\t')
1.4定义主函数main跑起来
if __name__ == '__main__':
start = time.time()
Get_data()
print('运行时间:' + str(time.time() - start) + '秒')
至此,数据爬取完成。
2.种族和职业进行组合。
2.1未完成 //未完成,使用穷举方法进行组合会出现内存不够导致组合失败(for循环嵌套导致数组内存超限)
//待学习,使用知识图谱建立组合优选,可参考:https://ya360.com/12447.html
期间遇到的问题:
1.爬取棋子数据时为动态js加载,需通过json模块的loads方法获取
2.3层for循环嵌套数据量大,导致计算失败,需优化计算方法。
⑤ 如何用python爬取网站数据
这里简单介绍一下吧,以抓取网站静态、动态2种数据为慧返拍例,实验环境win10+python3.6+pycharm5.0,主要内容如下:
抓取网站静态数据(数据在网页源码中):以糗事网络网站数据为例
1.这里假设我们抓取的数据如下,主要包括用户昵称、内容、好笑数和评论数这4个字段,如下:
对应的网页源码如下,包含我们所需要的数据:
2.对应网页结构,主要代码如下,很简单,主要用到requests+BeautifulSoup,其中requests用于请求页面,BeautifulSoup用于解析页面:
程序运行截图如下,已经成功爬取到数据:
抓取网站动态数据(数据不在网页源码中,json等文件中):以人人贷网站数据为例
1.这里假设我们爬取的是债券数据,主要包括年利率世型、借款标题、期限、金额和进度这5个字段信息,截图如下:
打开网页源码中,可以发现数据不在网页源码中,按F12抓包分析时,才发现在一个json文件中,如下:
2.获取到json文件的url后,我们就可以爬取对应数据了,这里使用的包与上面类似,因为是json文件,所以还用了json这个包(解析json),主要内容如下:
程序运行截图如下,前羡已经成功抓取到数据:
至此,这里就介绍完了这2种数据的抓取,包括静态数据和动态数据。总的来说,这2个示例不难,都是入门级别的爬虫,网页结构也比较简单,最重要的还是要会进行抓包分析,对页面进行分析提取,后期熟悉后,可以借助scrapy这个框架进行数据的爬取,可以更方便一些,效率更高,当然,如果爬取的页面比较复杂,像验证码、加密等,这时候就需要认真分析了,网上也有一些教程可供参考,感兴趣的可以搜一下,希望以上分享的内容能对你有所帮助吧。
⑥ Python爬虫如何写
Python的爬虫库其实很多,像常见的urllib,requests,bs4,lxml等,初始入门爬虫的话,可以学习一下requests和bs4(BeautifulSoup)这2个库,比较简单,也易学习,requests用于请求页面,BeautifulSoup用于解析页面,下面我以这2个库为基础,简单介绍一下Python如何爬取网页静态数据和网页动态数据,实验环境win10+python3.6+pycharm5.0,主要内容如下:
Python爬取网页静态数据
这个就很简单,直接根据网址请求页面就行,这里以爬取糗事网络上的内容为例:
1.这里假设我们要爬取的文本内容如下,主要包括昵称、内容、好笑数和评论数这4个字段:
打开网页源码,对应网页结构如下,很简单,所有字段内容都可以直接找到:
2.针对以上网页结构,我们就可以编写相关代码来爬取网页数据了,很简单,先根据url地址,利用requests请求页面,然后再利用BeautifulSoup解析数据(根据标签和属性定位)就行,如下:
程序运行截图如下,已经成功爬取到数据:
Python爬取网页动态数据
很多种情况下,网页数据都是动态加载的,直接爬取网页是提取不到任何数据的,这时就需要抓包分析,找到动态加载的数据,一般情况下就是一个json文件(当然,也敬链誉可能是其他类型的文件,像xml等),然后请求解析这个json文件,就能获取到我们需要的数据,这里以爬取人人贷上面的散标数据为例:
1.这里假设我们爬取的数据如下,主要包括年亮段利率,借款标题,期限,金额,进度这5个字段:
2.按F12调出开发者工具,依次点击“Network”->“XHR”,F5刷新页面,就可以找到动态加载的json文件,具体信息如下:
3.接着,针对以上抓包分析,我们就可以编写相关代码来爬取数据了,基本思路和上面的静态网页差不多,先利用requests请求json,然后再利用python自带的json包解析数据就行,如下:
程序运行截图如下,已经成功获取到数据:
至此,我们就完成了利用python来爬取网页数据。总的来说,整个过程很简单,requests和BeautifulSoup对于初学者来说,非常容易学习,也易掌握,可以学习使用一下,后期熟悉后,可以学习一下scrapy爬虫框架,可以明显提高开发效率,非常不错,当然,网页中要是有加密、验证码等,这个就需要自己好好琢磨,研究对策了,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分唤陆享的内容能对你上有所帮助吧,也欢迎大家评论、留言。
⑦ 怎样用python爬取疫情数据
import requests
from bs4 import BeautifulSoup
import re
import json
# 1.发送请求,获取疫情首页(数据来源于丁香园)
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page = response.content.decode()
# 2.从疫情首页提取最近一日数据
soup = BeautifulSoup(home_page, 'lxml')
script = soup.find(id='getAreaStat')
text = script.string
# 3.提取数据获取json格式数据
json_str = re.findall(r'\[.+\]', text)[0]
# 4.把json格式转换为python类型
last_day_corona_virus = json.loads(json_str)
# 5.以json格式保存最近一日数据
with open('data/last_day_coronavirus.json', 'w') as fp:
json.mp(last_day_corona_virus, fp, ensure_ascii=False)