robots.txt
的君子协定,我们还需要尽量少用爬虫,不商用爬虫等行业潜规则,慎用技术。
ctrl+f
定位到图片的位置
图片和视频的爬取和文本的有些不一样,我们想要下载图片或视频,就需要首先知道图片或视频的链接,然后通过图片的链接获取图片二进制代码,然后将二进制代码下载到本地,这样一般的图片和视频就到了本地了。
request
库get()
网页源代码
re
库的findall()
获取图片链接
通过图片链接get()
二进制代码
request
库
get
,没有伪造
headers
。
response = requests.get('https://qq.yh31.com/zjbq/1094990.html')
但是,我太天真了,后来爬到的图片里,除了前三张表情包正常外,其余全是这样的图片。
害,还是有反爬机制的 所以,慢慢找反爬方式,首先需要获取浏览器的请求头。
F12
+点击
Network
刷新页面,抓包其中一个图片的链接,然后得到浏览器请求头。将其添加到
get()
中。
def get_url(header): response = requests.get('https://qq.yh31.com/zjbq/1094990.html',headers=header)
xpath
、
beautifulsoup
都可以解析。
pattern = r''# .*?意思是提取尽可能少的许多内容 pic_re_url = re.findall(pattern, response.text)
如果有小伙伴不理解正则表达式,可以回看【文科生快速入门python(十) | 正则表达式详细解读】,跟着敲一遍很快学会
re
库。
response.text 意为获取网页源代码
response.content 意为获取二进制代码
def get_pic(header,one_url,name): response = requests.get(one_url,headers=header) response.content
with
语句来读写文件,要给每个图片命名,所以使用了前面数据媛讲过的%的妙用。
with open(r'D:\0code\HSS_data\20200508-emoji_spider\emoji\%d.gif'%name,'wb') as f: f.write(response.content)
request
库get()
网页源代码
re
库的findall()
获取图片链接
通过图片链接get()
二进制代码
for
循环遍历url
列表进行逐个爬取
with
语句和%d
生成文件名