|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 kunkun_1230 于 2017-9-3 19:19 编辑
周末的时候根据教程,模仿了一个爬取知乎妹纸图的文件。
系统:win10
工具:python 3.6
在模拟过程中,发现所有的妹纸图片都在这样一个语句中(以诸多语句中的一个为例):
<noscript>
<img class="origin_image zh-lightbox-thumb" data-original="https://pic3.zhimg.com/bf381cae0b94c7b6b70913423b5bb27a_r.jpg" data-rawheight="1500" data-rawwidth="1082" src="https://pic3.zhimg.com/bf381cae0b94c7b6b70913423b5bb27a_b.jpg" width="1082"/>
还差点火候~~( ′ ▽ ` )ノ
</noscript>
于是想采用以下语句进行提取链接:
with open("C:/output/rawfile/noscript_meta.txt", 'w', encoding='utf-8') as noscript_meta:
noscript_nodes = result_soup.find_all('noscript') # 找到所有<noscript>node
noscript_inner_all = ""
for noscript in noscript_nodes:
noscript_inner = noscript.get_text() # 获取<noscript>node内部内容
noscript_inner_all += noscript_inner + "\n"
noscript_all = html.parser.unescape(noscript_inner_all) # 将内部内容转码并存储
noscript_meta.write(noscript_all)
然而提取出来的链接只有这几个字: 还差点火候~~( ′ ▽ ` )ノ
可见get_txt这个写法可能不对。
尝试采用 noscript_inner = noscript[‘src’]或者['data-original'],结果如图提示:
keyerror
错误原因
请问有哪位大神知道,这种情况应该如何将图片链接在两个noscript中提取出来呢?
不胜感激/(ㄒoㄒ)/~~(全部程序见network.py https://github.com/kunkun1230/Python-/tree/master/output/rawfile)
本帖最后由 ba21 于 2017-9-3 23:32 编辑
- import re
- str1='''<noscript>
- <img class="origin_image zh-lightbox-thumb" data-original="https://pic3.zhimg.com/bf381cae0b94c7b6b70913423b5bb27a_r.jpg" data-rawheight="100" data-rawwidth="400" src="https://pic3.zhimg.com/bf381cae0b94c7b6b70913423b5bb27a_b.jpg" width="1082"/>
- 还差点火候~~( ′ ▽ ` )ノ
- </noscript>
- <noscript>
- <img class="origin_image zh-lightbox-thumb" data-original="https://pic3.zhimg.com/bf381cae0b94c7b6b70913423b5bb27a_asdf.jpg" data-rawheight="1550" data-rawwidth="100" src="https://pic3.zhimg.com/bf381cae0b94c7b6b70913423b5bb27a_43.jpg" width="1082"/>
- 还差点火候~~( ′ ▽ ` )ノ
- </noscript>
- '''
- r=re.findall(r'<img class="origin_image zh-lightbox-thumb" data-original="(https://.+\.jpg)" data-rawheight="[0-9]+" data-rawwidth="[0-9]+" src="(https://.+\.jpg)"',str1)
- for url in r:
- print(url[0]+'\n'+url[1])
复制代码
|
|