小白爬虫代码走进百度文库(附详细爬坑过程)
晚上好! 楼主在电气工作中经常会用到这款接地寻找仪,但苦于没有相关的教程,打算在网上下一篇教学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等于空,也就是页面源代码上面没有我们要找的图片连接
点击进取获得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下的目录管理
图片下载指南