点赞再看,养成习惯
[toc]
偶然发现一个网站,先看看效果
下面就授人以渔
分析一下
站点:https://www.gamersky.com/ent/
打开网站,有多个栏目,一一翻阅后,我们决定采集游民福利栏目。目测有 200*20*66+ z
打开后,我们现在就是一个 ul -> li -> div -> ... -> a -> https://...shtml,拿到详情页。
详情页里边就是我们今天要调试的img了 下图就是了
步骤
- 栏目页请求解析出详情页
- 详情页解析出图片地址
- 翻页并下载到 D:
- 查看本地图片查漏
源码
前面我也在用java写过几个爬虫,后来看还是python更香,所以果断切换。
我这里使用的 VSCode 编辑器,很轻量级好用。版本是 python3.7 的,用了Anaconda3,它是 python 的一个集成环境,非常好用。
这几个库都是python官方自带的
import requests
import re
import os
import hashlib不放源码就是耍流氓源码:
import requests
import re
import os
import hashlib
from urllib.request import urlretrieve
os.makedirs('D:\\photo\\', exist_ok=True)
## 获取详情页html
def get_detail_html(url):
try:
user_agent2 = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Aoyou/W2ZjRnNwcnxUNF9jbloLVppyi3m8uIwBp69QKGQFvyaY04TkBvm7s4d8hQ=='
response = requests.get(url, headers={'User-Agent': user_agent2})
response.raise_for_status()
response.encoding = response.apparent_encoding
except Exception as e:
print("ERROR")
else:
print(response.url)
print("ok")
return response.content
# 获取全部链接
def get_img_url(html):
urls = []
pat = r'src="(http.+?\.jpg)"'
imglist = re.findall(pat, html)
for img in imglist:
if(len(img) < 100):
urls.append(img)
return urls
# 存到D盘中去
def downloadImg(imgUrls):
for imgUrl in imgUrls:
urlretrieve(imgUrl, 'D:\\photo\\' + get_md5(imgUrl) + '.png')
print(imgUrl)
def get_md5(imgUrl):
return hashlib.md5(imgUrl.encode('utf-8')).hexdigest()
if __name__ == '__main__':
url = "https://www.gamersky.com/ent/202107/1406688.shtml"
url2 = "https://www.gamersky.com/ent/202104/1379451.shtml"
html = get_detail_html(url2)
imgUrls = get_img_url(str(html))
print(imgUrls)
downloadImg(imgUrls)
print("采集结束,快去D:看看")一键运行下载本地
待解决
- 列表翻页
- 详情页翻页
这俩个问题,详情页是个url拼接,应该没啥难度
难点
列表页可能是js的,这几天处理一下
















