
本帖最后由 boomvia 于 2019117 13:16 编辑
代码更新了。修复了一些bug,有问题的话留言我再修改
水平有限,谢谢福娃们的指导
之前福娃分享的真实街拍网站的爬虫下载
原贴:福娃的原贴
水平有限,不好用别喷
如果报错的话自己百度下基本都能找到解决方法
PS:图片文件比较大,小姐姐需要住在豪华别墅
#!/usr/bin/env python3
# * coding: utf8 *
import os
from pathlib import Path
try:
import requests
except:
import os
os.system(“pip install requests i http://pypi.douban.com/simple trustedhost pypi.douban.com”)
import requests
try:
import os
from pyquery import PyQuery
except:
import os
os.system(“pip install pyquery i http://pypi.douban.com/simple trustedhost pypi.douban.com”)
from pyquery import PyQuery
try:
from multiprocessing import Pool
except:
import os
os.system(“pip3 install multiprocess i http://pypi.douban.com/simple trustedhost pypi.douban.com”)
from multiprocessing import Pool
urls = [
“https://www.cnjiepai.com/tags/%E9%某处%91%E4%B8%9D.html”,
“https://www.cnjiepai.com/tags/%E7%9F%AD%E8%A3%99.html”,
“https://www.cnjiepai.com/tags/%E7%BE%8E%E8%85%BF.html”,
“https://www.cnjiepai.com/tags/%E8%82%89%E4%B8%9D.html”,
“https://www.cnjiepai.com/tags/%E5%88%B6%E6%9C%8D.html”,
“https://www.cnjiepai.com/tags/%E5%9C%B0%E9%93%81.html”,
“https://www.cnjiepai.com/tags/%E5%8E%9A%E9%某处%91%E4%B8%9D.html”,
“https://www.cnjiepai.com/tags/%E7%83%AD%E8%A3%A4.html”,
“https://www.cnjiepai.com/tags/%E4%B8%9D%E8%A2%9C%E8%84%9A.html”,
“https://www.cnjiepai.com/tags/%E5%8E%9A%E8%82%89%E4%B8%9D.html”,
“https://www.cnjiepai.com/tags/%E5%8E%9A%E7%81%B0%E4%B8%9D.html”,
“https://www.cnjiepai.com/tags/%E7%B4%A7%E8%BA%AB.html”,
“https://www.cnjiepai.com/tags/%E5%85%AC%E4%BA%A4%E8%BD%A6.html”,
“https://www.cnjiepai.com/tags/%E9%A2%9C%E5%80%BC.html”,
“https://www.cnjiepai.com/categories/%E8%A1%97%E6%8B%8D.html”,
“https://www.cnjiepai.com/categories/%E8%87%AA%E6%8B%8D.html”,
“https://www.cnjiepai.com/categories/%E7%BA%A6%E6%8B%8D.html”
]
def seImages(post_url, imgDir):
try:
resp = requests.get(post_url, timeout = 60)
except Exception as e:
print(e)
doc = PyQuery(resp.content.decode(‘utf8’))
imgItems = doc(‘p img’).items()
for i, item in enumerate(imgItems):
imgUrl = item.attr(‘datasrc’).strip()
if imgUrl:
array = imgUrl.split(‘/’)
imgName = (“00″ + str(i + 1))[3:] + ” ” + array[len(array) 1]
file = imgDir / imgName
try:
if file.exists():
#已存在的文件,跳过下载
print (‘跳过 > ‘ + str(file) + ‘ 文件已存在’)
else:
response = requests.get(imgUrl)
img = response.content
r = requests.get(imgUrl)
with open(file, ‘wb’) as f:
f.write(img)
f.close()
print(str(file) + ‘ 下载成功’)
except Exception as e:
print(e)
print(doc(‘h1’).html() + ” success”)
def downLoad(url, path = Path(‘.’), page = 1 ):
print(url)
session = requests.Session()
headers = {
‘UserAgent’: ‘Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36’
}
session.headers.update(headers)
try:
resp = requests.get(url, timeout = 60)
except Exception as e:
print(e)
doc = PyQuery(resp.content.decode(‘utf8’))
listInfo = doc(‘.listinfo h1’)
tagDir = path / listInfo.html()
for item in doc(‘.posttitle a’).items():
imgDir = tagDir / (item.attr(‘title’).strip())
imgDir.exists() or imgDir.mkdir(parents = True)
seImages(item.attr(‘href’), imgDir)
print(str(tagDir) + ‘ success ‘)
nextUrl = doc(‘[arialabel=”Next”]’).attr(‘href’)
#下一页
if nextUrl:
downLoad(nextUrl.strip(), path)
if __name__ == ‘__main__’:
with Pool(processes = 10) as pool: #同时下载10个模块的数据
pool.map(downLoad, urls)复制代码
效果图:
cn.png (399.17 KB, 下载次数: 0)
下载附件
效果图
2019117 13:16 上传
2楼:这么好的技术帖,为啥没人呢,帮你顶一下
3楼:本帖最后由 ilalien 于 2019116 22:37 编辑
>python d.py
File “d.py”, line 76
itemPath = path + “\” + item.attr(‘title’).strip()
^
SyntaxError: EOL while scanning string literal
搞定。
报这个错的,在\后面再加一个\,即可
4楼:ModuleNotFoundError: No module named ‘pyquery’
这个咋办
5楼:本帖最后由 halrj 于 2019117 07:51 编辑
1038139119 发表于 2019117 00:31
ModuleNotFoundError: No module named ‘pyquery’
这个咋办
安装一下pyquery 在cmd 下运行这个pip install pyquery i http://pypi.douban.com/simple trustedhost pypi.douban.com
国内的源,,,
6楼:怎么下载不全的,就不执行任务了?
7楼:看了一下,每个栏目只能爬第一页,后面的页面,就不爬了?
8楼:给你看下平时我的给作:
1.
os.path.exists(path) or os.makedirs(path)
2.
import requests as _requests
requests = requests.Session()
requests.headers.update({“UA”:”xxxx”})
3.
for item in enumerate(imgItems, 1):
pass
4.
from pathlib import Path
a = Path(‘/tmp/a.png’)
自己去搜索吧
9楼:悦~ 发表于 2019117 08:29
给你看下平时我的给作:
1.
os.path.exists(path) or os.makedirs(path)
不懂请解释 一下!
10楼:对了 关于 导包问题:
try:
import requests
except:
import os
os.system(“pip install requests”)
直接自动给它安装了。 这样就不会有小白,问 找不到模块了。
11楼:halrj 发表于 2019117 08:31
不懂请解释 一下!
如果你有 python 基础的话,就去尝试一下这些给作你就明白了。
如果你没有py基础,这个你就忽略吧!
12楼:楼主是足系列足恋啊!
13楼:能发个教程吗 每次遇到这种不知道怎么用 着急的找地上的蚂蚁吃
14楼:kaqiusha 发表于 2019117 10:43
能发个教程吗 每次遇到这种不知道怎么用 着急的找地上的蚂蚁吃
新建文本文件,复制代码再粘贴进去,然后修改文件扩展名为.py
百度下.py文件怎么执行
15楼:执行不了多久就会自动停止运行
16楼:必须定一个啊感谢楼主以及各位
17楼:谢谢分享,谢谢!!!!!!!
18楼:保存为.py后,打开弹出一个CMD窗口,然后就闪退了。。这个是怎么弄啊
19楼:感谢分享!!
20楼:boomvia 发表于 2019117 13:00
新建文本文件,复制代码再粘贴进去,然后修改文件扩展名为.py
百度下.py文件怎么执行
老铁如果可以的话 你可酷不不可以以这个帖子为例 弄一个教程发到论坛来 ,我看大家没人弄过 。感谢
21楼:我觉得写代码的都是大佬…
