import requests
from lxml import etree
from bs4 import BeautifulSoup
import os
from selenium import webdriver #解析每个漫画分页并下载漫画
def manhua(url): browser.get(url) #获取模拟访问的页面源码
html=browser.page_source html = etree.HTML(html)
img_url = html.xpath('//img[@id="mangaFile"]/@src')[0]
alt = html.xpath('/html/body/div[2]/div[2]/h1/a/text()')[0]
title = html.xpath('/html/body/div[2]/div[2]/h2/text()')[0]
print(img_url,alt,title) # print(html) path='./漫画/'+alt+'/'+title+'/'
if not os.path.exists(path):
os.makedirs(path)
fname=img_url.split('/')[-1]
# print(fname) print(os.path.join(path,fname)) # request.urlretrieve(img_url,os.path.join(path,fname)) #请求图片地址
response = requests.get(img_url)
#二进制解码
data= response.content
#保存文件
with open(path+fname,'wb') as f:
f.write(data)
#解析获取漫画分页链接
def manhua_url(url):
response = requests.get(url)
response.encoding = response.apparent_encoding
html = response.text
html = etree.HTML(html)
# print(html)
#i为漫画页数
i = html.xpath('/html/body/div[2]/div[2]/span/text()')[1][1:-1]
i=int(i)
# print(i)
#找到分页规律
#拼接分页链接,选择用format函数
url = url +'/index.html?p={}'
# print(url)
for n in range(1,i+1):
fullurl = url.format(n)
print(fullurl)
# time.sleep(2)
#fullurl为所有的分页漫画链接
manhua(fullurl) #解析列表页
def list(lb_url):
response = requests.get(lb_url)
response.encoding = response.apparent_encoding
html = response.text
html = BeautifulSoup(html,'lxml')
#匹配所有章节链接
url_list = html.select('div.subBookList ul li')
for url in url_list :
url = url.select('a')[0].get('href').split('/')[-2] # print(url)
fullurl = os.path.join(lb_url,url)
print(fullurl)
#章节链接
manhua_url(fullurl) # print(url_list)
# print(html) #解析首页
def shouye():
#首页链接
base_url = 'http://www.omanhua.com/'
#发起请求
response = requests.get(base_url)
#解码
response.encoding = response.apparent_encoding
#获取返回的网页
html = response.text
# print(html)
#解析
html =BeautifulSoup(html,'lxml')
#匹配最热漫画链接
url_list = html.select('ul#cartoon_image_show1 li')
for url in url_list:
# print(url)
url = url.select('a')[0].get('href')[1:]
# alt = url.select('a')
# print(alt)
#拼接链接
fullurl = os.path.join(base_url,url)
print(fullurl) list(fullurl)
if __name__ == '__main__':
# 用自动测试模块selenium模拟浏览器访问,这里用谷歌 图片加载获取不到图片链接
#后面的路径是chorm驱动路径
browser = webdriver.Chrome(executable_path=r'C:\Users\zhaozhi\Desktop\chromedriver.exe')
shouye() 刚开始自学爬虫不久,代码可能写的有点繁琐,希望和大家一起学习学习进步

python爬取哦漫画的更多相关文章

  1. Node.js/Python爬取网上漫画

    某个周日晚上偶然发现了<火星异种>这部漫画,便在网上在线看了起来.在看的过程中图片加载很慢,而且有时候还不小心点到广告,大大延缓了我看的进度.后来想到能不能把先把漫画全部抓取到本地再去看. ...

  2. Python 爬取所有51VOA网站的Learn a words文本及mp3音频

    Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...

  3. python爬取网站数据

    开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...

  4. python爬取某个网页的图片-如百度贴吧

    python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...

  5. Python:爬取乌云厂商列表,使用BeautifulSoup解析

    在SSS论坛看到有人写的Python爬取乌云厂商,想练一下手,就照着重新写了一遍 原帖:http://bbs.sssie.com/thread-965-1-1.html #coding:utf- im ...

  6. 使用python爬取MedSci上的期刊信息

    使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...

  7. python爬取免费优质IP归属地查询接口

    python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...

  8. Python爬取豆瓣指定书籍的短评

    Python爬取豆瓣指定书籍的短评 #!/usr/bin/python # coding=utf-8 import re import sys import time import random im ...

  9. python爬取网页的通用代码框架

    python爬取网页的通用代码框架: def getHTMLText(url):#参数code缺省值为‘utf-8’(编码方式) try: r=requests.get(url,timeout=30) ...

随机推荐

  1. 题解 yzoj1663: 愤怒的牛(二分) yzoj1662: 曲线(三分)

    话说二分和三分的题还没有整理过,就趁这两题来整理下笔记 先讲讲关于二分,对于二分的具体边界长期以来对我来说都是个玄学问题,都是边调边拍改对的.思路大体是确定左边界l,和有边界r,判断满足条件缩小范围. ...

  2. 一起MySQL时间戳精度引发的血案

    写在前面 最近工作中遇到两例mysql时间戳相关的问题,一个是mysql-connector-java和msyql的精度不一致导致数据查不到:另一例是应用服务器时区错误导致数据查询不到.通过这篇文章, ...

  3. 【占坑】IDEA从github 导入并运行 SpringBoot + VUE项目

    最近工程实践的项目内容是开发一个类似于博客和bbs论坛的系统,在github上找了一个类似的项目可以照着写一写.所以这里先占着坑,等把后端的数据库连接学完了再来填坑. github项目链接:githu ...

  4. 原来JS是这样的 - 对象属性

    引子 在上一篇(原来JS是这样的 (2))刚发布的时候就阅读了那篇文章的人可能会注意到那篇曾用过"JavaScript 中万物皆对象"的说法,而在随后我发现错误后立即更新改掉了这个 ...

  5. Java集合中List、Set以及Map

    概述: List , Set, Map都是接口:List , Set继承至Collection接口,Map为独立接口 Set下有HashSet,LinkedHashSet,TreeSet List下有 ...

  6. 【5】SVM算法原理

    大纲 简介 支持向量机(support vector machines)是一个二分类的分类模型(或者叫做分类器).如图: 它分类的思想是,给定给一个包含正例和反例的样本集合,svm的目的是寻找一个超平 ...

  7. 编写一个函数来反转某个二进制型里的字节顺序(erlang)

    reverse_byte(<<>>) -> <<>>; reverse_byte(<<Header:8, Tail/bits>& ...

  8. Mybatis使用入门,这一篇就够了

    mybatis中,封装了一个sqlsession 对象(里面封装有connection对象),由此对象来对数据库进行CRUD操作. 运行流程 mybatis有一个配置的xml,用于配置数据源.映射Ma ...

  9. android中fragment与activity之间通信原理以及例子

    参考文章 http://blog.csdn.net/guozh/article/details/25327685#comments Activity和fragment通信方式一般有3种方法 1.在fr ...

  10. 并发编程之线程创建到销毁、常用API

    在前面一篇介绍了线程的生命周期[并发编程之多线程概念],在本篇将正式介绍如何创建.中断线程,以及线程是如何销毁的.最后,我们会讲解一些常见的线程API. 线程创建 Java 5 以前,实现线程有两种方 ...