小白爬虫代码走进百度文库(附详细爬坑过程)

小白爬虫代码走进百度文库(附详细爬坑过程)

晚上好! 楼主在电气工作中经常会用到这款接地寻找仪,但苦于没有相关的教程,打算在网上下一篇教学PPT,这次使用 requests,re,os 来练练手。如果你刚刚学爬虫, 可以仔细阅读这篇文章。。。

确定要抓的对象

import requests,bs4,re
'''wb=requests.get('https://wenku.baidu.com/view/eb50e11f7375a417866f8f9d.html').content.decode('GBK')
print(wb)
#通过下图直接获得编码,此时wb 是一个requests对象,上面包含页面源代码
usernamelist=re.findall('https://wkretype.bdimg.com/retype/zoom/(.*?)',wb,re.S)
print(usernamelist)'''
#废话不说,根据图片连接直接找图片连接,结果usernamelist等于空,也就是页面源代码上面没有我们要找的图片连接

确定这里面的要爬的内容相关图片的编码方式通过网页查询通过火狐浏览器确定要爬的对象,我在这个项目中主要把上面的的文章全部爬下来进行学习直到我找到了六月皮卡丘的文章,在此感谢,附上连接

通过网络连接上面的XHR模块进行解析,让文件从大到小排列,根据关键词get course定位点击进取获得jquery文件,发现我们要找的‘https://wkretype.bdimg.com/retype/zoom/XXX’之类的图片连接就在其中

jQuery110106387704123584015_1588165599118({"list":[{"zoom":"https:\/\/wkretype.bdimg.com\/retype\/zoom\/29d5c5aa284ac850ad02421b?pn=1&o=jpg_6&md5sum=2fe3f0f0a8f38cf741d3c86a80828686&sign=e1753a641f&png=0-102470&jpg=0-162020","page":1},{"zoom":"https:\/\/wkretype.bdimg.com\/retype\/zoom\/29d5c5aa284ac850ad02421b?pn=2&o=jpg_6&md5sum=2fe3f0f0a8f38cf741d3c86a80828686&sign=e1753a641f&png=102471-167356&jpg=162021-314835","page":2},{"zoom":"https:\/\/wkretype.bdimg.com\/retype\/zoom\/29d5c5aa284ac850ad02421b?pn=3&o=jpg_6&md5sum=2fe3f0f0a8f38cf741d3c86a80828686&sign=e1753a641f&png=16。。。。#此处省略

马上用上刚刚学好的re,抓出来。文件编码是通过页面信息可以获得

comments = requests.get('https://wenku.baidu.com/browse/getbcsurl?doc_id=eb50e11f7375a417866f8f9d&pn=1&rn=99999&type=ppt&callback=jQuery11010024750152178876772_1587297744033&_=1587297744034').content.decode('windows-1252')
newpatter=re.compile('"zoom":"(.*?)"')
srcadress=re.findall(newpatter,comments)
print(srcadress)

新的改变把图片的地址装入列表对象(出现问题无法正确转义\)

出现了这个代码,提示你无法正常解析文件,仔细一看
这篇文章给了我启示

raise InvalidURL(*e.args)
requests.exceptions.InvalidURL: Failed to parse: https:\

出现了这个代码,提示你无法正常解析文件,仔细一看srcdress中图片地址链接为https:\/\/wkretype.bdimg.com\/retype\/zoom\/29d5c5aa284ac850ad02421b?pn。。。导致无法连接,解决方法如下

import requests
bbb=r'dfsf.?\\\/sda'
print(bbb)
print('https:\\/\\/wkretype.bdimg.com\\/retype\\/zoom\\/29d5c5aa284ac850ad02421b?pn=28&o=jpg_6&md5sum=2fe3f0f0a8f38cf741d3c86a80828686&sign=e1753a641f&png=2062803-&jpg=3568745-')
vvv=re.sub(r'\\','','https:\\/\\/wkretype.bdimg.com\\/retype\\/zoom\\/29d5c5aa284ac850ad02421b?pn=28&o=jpg_6&md5sum=2fe3f0f0a8f38cf741d3c86a80828686&sign=e1753a641f&png=2062803-&jpg=3568745-')
print(r'www.python.org')
print(vvv)

通过上面的代码把地址最终解析了出来,把所用的src图片地质入库进入srcadress列表中

新改变文件夹的地址

# import os
# print(os.getcwd())
# os.chdir('./linshi')

新进行文件批量书写

for i in range(len(srcadress)):
    vvv=re.sub(r'\\','',srcadress[i])
    #在遍历函数的时候删除不喜欢的\符号
    r = requests.get(vvv).content
    with open('./{}+{}'.format('jpg.asdwqe',i),'wb')as f:
        f.write(r)  # 将内容写入图片
        f.close()
    print(i)

接下来就完整的下好所用图片了,而且每个图片都完整批量命名了

参考文件
re内容
sub函数
linux下的目录管理
图片下载指南

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值