导入所需的包(re,requests,json,os,urllib的request)
import re
import requests
import json
import os
from urllib import request
通过需求指定网址
url = 'https://www.toutiao.com/a6590127156037157379/'
由于该网站有反爬机制要添加请求头(headers)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
requests的get方法获取路由网址的页面(指定网址,携带请求头)
response = requests.get(url,headers=headers)
request.get获取到的html格式页面转换为字符串的html页面
html_str = response.text
正则表达式获取数据
pattern = r'gallery: JSON\.parse\((.*)\),'
将正则表达式匹配到的数据返回
match_res = re.search(pattern, html_str)
新建文件夹
# 如果没有名为download的文件夹进行创建
if not os.path.exists('download') :
os.mkdir('download')
定位需要的数据
if match_res:
# 这本来就是str
print(match_res.group(1))
json_origin = match_res.group(1)
# 这是第一遍loads, 返回值是str
res_buzhidao = json.loads(json_origin)
# print(res_buzhidao)
# print(type(res_buzhidao))
res_dict = json.loads(res_buzhidao)
# print(res_dict)
# print(type(res_dict))
sub_images_list = res_dict['sub_images']
for image in sub_images_list:
image_url = image['url']
filename = 'download/' + image_url.split('/')[-1] + '.jpg'
# 下载图片
request.urlretrieve(image_url, filename)
else:
print('你写错了, 不应该来我这')