【简单爬虫】 爬取妹子图 自动下载 [改进]
本帖最后由 伪。 于 2019-12-4 09:40 编辑改自: 【作品展示】闲来无事做了个半自动获取妹子图的爬虫
新增:
1.根据套图分类文件夹,将一个套图下载到一个文件夹。
2.自动创建文件夹。
3.自动读取下一页内容。
4.已经下载过的将不再进行下载。
# 爬取妹子图
import requests
import os
from bs4 import BeautifulSoup
MZITU = 'https://www.mzitu.com'
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'
HEADERS = {
'User-Agent': USER_AGENT,
'Referer': MZITU}
SAVE_PATH = 'D:\妹子图\\'
def get_request(url):
res = requests.get(url, headers=HEADERS)
print("正在请求 " + url)
return res
def get_request_soup(url):
html = get_request(url).text
print("正在解析 ")
return BeautifulSoup(html, 'lxml')
def get_girl_list(url):
soup = get_request_soup(url)
next_url = soup.find(class_='next page-numbers').get('href')
girls = soup.find(class_='postlist').select('li')
for girl in girls:
url = girl.find('a').get('href')
name = girl.find('span').find('a').string
get_girl_group(url, 1, name)
if not next_url == "":
get_girl_list(next_url)
def get_girl_group(url, page, name):
soup = get_request_soup(url + "/" + str(page))
max_page = int(soup.find(class_='pagenavi').select('span')[-2].string)
image = soup.find(class_='main-image').find('img').get('src')
save_img(image, name, page)
page += 1
if page < max_page:
get_girl_group(url, page, name)
# 存储妹子图片到本地
def save_img(url, file_name, page):
file_path = SAVE_PATH + file_name
image_path = file_path + "\\" + str(page) + ".jpg"
print('检查文件是否存在 ' + image_path)
if not os.path.exists(image_path):
print("文件正在下载...")
html = get_request(url).content
print("下载成功")
print("检查文件夹是否存在")
exi = os.path.exists(file_path)
if not exi:
print("创建文件夹 " + file_name)
os.makedirs(file_path)
else:
print("文件夹已存在 " + file_name)
print("存入磁盘中...")
f = open(image_path, 'wb')
f.write(html)
print("存放完成")
f.close()
else:
print("文件已存在,无需重复下载" + image_path)
get_girl_list(MZITU)
{:10_269:} File "E:/PythonFile/学习/xx.py", line 54
image_path = file_path + "\" + str(page) + ".jpg"
^
SyntaxError: EOL while scanning string literal 请问下 File "E:/学习py资料/尝试搭建服务器/venv/爬图2.py", line 54
image_path = file_path + "\" + str(page) + ".jpg"
^
SyntaxError: EOL while scanning string literal这个是什么意思呢
Zynismus 发表于 2019-12-13 21:13
File "E:/PythonFile/学习/xx.py", line 54
image_path = file_path + "\" + str(page) + ".jpg"
...
我也是遇到这个问题了,你解决了吗?是要建文件夹吗????还是怎么做呢 本帖最后由 学Python不开车 于 2020-2-15 10:27 编辑
这个问题主要是 在于 储存路径的最后一位 不能是,反斜杠'\',如果是反斜杠就会报错, 即使用反斜杠转义也不行,所以要避免这种写法 ,可以将 SAVE_PATH 改成 SAVE_PATH = 'D://妹子图//'把54行的 "\"改成"/"
本帖最后由 学Python不开车 于 2020-2-15 10:27 编辑
还有苹果 发表于 2020-1-10 15:24
我也是遇到这个问题了,你解决了吗?是要建文件夹吗????还是怎么做呢
这个问题主要是 在于 储存路径的最后一位 不能是,反斜杠'\',如果是反斜杠就会报错, 即使用反斜杠转义也不行,所以要避免这种写法 ,可以将 SAVE_PATH 改成 SAVE_PATH = 'D://妹子图//'把54行的 "\"改成"/" AttributeError: 'NoneType' object has no attribute 'select'
一套没下完就出现了这个错误。。。 我正在再改进这个,然后测试时没设置爬取次数,现在给我封IP了,网站都打不开了{:5_90:} D:\File\FILE\venv\Scripts\python.exe D:/File/FILE/pythonfile/pythonx/demo04.py
Traceback (most recent call last):
File "D:/File/FILE/pythonfile/pythonx/demo04.py", line 76, in <module>
get_girl_list(MZITU)
File "D:/File/FILE/pythonfile/pythonx/demo04.py", line 30, in get_girl_list
soup = get_request_soup(url)
File "D:/File/FILE/pythonfile/pythonx/demo04.py", line 26, in get_request_soup
return BeautifulSoup(html, 'lxml')
File "D:\File\FILE\venv\lib\site-packages\bs4\__init__.py", line 225, in __init__
raise FeatureNotFound(
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
正在请求 https://www.mzitu.com
正在解析
Process finished with exit code 1
我的执行报这个错误什么问题 好像跑不完 AttributeError: 'NoneType' object has no attribute 'select' No module named 'requests'
这个是什么错误呢??
Betterman. 发表于 2021-3-10 21:27
No module named 'requests'
这个是什么错误呢??
你缺少这个库,去控制版面下呗
页:
[1]