【cnjiepai】python爬虫下载

本帖最后由 boomvia 于 2019117 13:16 编辑
代码更新了。修复了一些bug

【cnjiepai】python爬虫下载

本帖最后由 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楼:我觉得写代码的都是大佬…

(0)

相关推荐