python爬取哦漫画

lyxdw 2018-06-25 原文

python爬取哦漫画

  1 import requests
  2 from lxml import etree
  3 from bs4 import BeautifulSoup
  4 import os
  5 from selenium import webdriver
  6 
  7 
  8 
  9 #解析每个漫画分页并下载漫画
 10 def manhua(url):
 11 
 12 
 13     browser.get(url)
 14 
 15     #获取模拟访问的页面源码
 16     html=browser.page_source
 17 
 18 
 19     html = etree.HTML(html)
 20     img_url = html.xpath('//img[@id="mangaFile"]/@src')[0]
 21     alt = html.xpath('/html/body/div[2]/div[2]/h1/a/text()')[0]
 22     title = html.xpath('/html/body/div[2]/div[2]/h2/text()')[0]
 23     print(img_url,alt,title)
 24 
 25 
 26     # print(html)
 27 
 28 
 29     path='./漫画/'+alt+'/'+title+'/'
 30     if not os.path.exists(path):
 31         os.makedirs(path)
 32     fname=img_url.split('/')[-1]
 33     # print(fname)
 34 
 35 
 36     print(os.path.join(path,fname))
 37 
 38     # request.urlretrieve(img_url,os.path.join(path,fname))
 39 
 40     #请求图片地址
 41     response = requests.get(img_url)
 42     #二进制解码
 43     data= response.content
 44     #保存文件
 45     with open(path+fname,'wb') as f:
 46         f.write(data)
 47 #解析获取漫画分页链接
 48 def manhua_url(url):
 49     response = requests.get(url)
 50     response.encoding = response.apparent_encoding
 51     html = response.text
 52     html = etree.HTML(html)
 53     # print(html)
 54     #i为漫画页数
 55     i = html.xpath('/html/body/div[2]/div[2]/span/text()')[1][1:-1]
 56     i=int(i)
 57     # print(i)
 58     #找到分页规律
 59     #拼接分页链接,选择用format函数
 60     url = url +'/index.html?p={}'
 61     # print(url)
 62     for n in range(1,i+1):
 63         fullurl = url.format(n)
 64         print(fullurl)
 65         # time.sleep(2)
 66         #fullurl为所有的分页漫画链接
 67         manhua(fullurl)
 68 
 69 #解析列表页
 70 def list(lb_url):
 71     response = requests.get(lb_url)
 72     response.encoding = response.apparent_encoding
 73     html = response.text
 74     html = BeautifulSoup(html,'lxml')
 75     #匹配所有章节链接
 76     url_list = html.select('div.subBookList ul li')
 77     for url in url_list :
 78         url = url.select('a')[0].get('href').split('/')[-2]
 79 
 80         # print(url)
 81         fullurl = os.path.join(lb_url,url)
 82         print(fullurl)
 83         #章节链接
 84         manhua_url(fullurl)
 85 
 86     # print(url_list)
 87     # print(html)
 88 
 89 #解析首页
 90 def shouye():
 91     #首页链接
 92     base_url = 'http://www.omanhua.com/'
 93     #发起请求
 94     response = requests.get(base_url)
 95     #解码
 96     response.encoding = response.apparent_encoding
 97     #获取返回的网页
 98     html = response.text
 99     # print(html)
100     #解析
101     html =BeautifulSoup(html,'lxml')
102     #匹配最热漫画链接
103     url_list = html.select('ul#cartoon_image_show1 li')
104     for url in url_list:
105         # print(url)
106         url = url.select('a')[0].get('href')[1:]
107         # alt = url.select('a')
108         # print(alt)
109         #拼接链接
110         fullurl = os.path.join(base_url,url)
111         print(fullurl)
112 
113         list(fullurl)
114 if __name__ == '__main__':
115     # 用自动测试模块selenium模拟浏览器访问,这里用谷歌 图片加载获取不到图片链接
116     #后面的路径是chorm驱动路径
117     browser = webdriver.Chrome(executable_path=r'C:\Users\zhaozhi\Desktop\chromedriver.exe')
118     shouye()

刚开始自学爬虫不久,代码可能写的有点繁琐,希望和大家一起学习学习进步

发表于 2018-06-25 22:06 ManShow2zz 阅读() 评论() 编辑 收藏

 

版权声明:本文为lyxdw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lyxdw/p/9226583.html

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

随机推荐

  1. 文献综述写作之“结构内容”

      综述:   又称文献综述,英文名为review。它是利用已发表的文献资料为原始素材撰写的,通过对已发表材料 […]...

  2. 幂律分布研究简史(转载) – Haippy

    幂律分布研究简史(转载) 2011-12-05 16:38  Haippy  阅读(2590)  评论(0)  […]...

  3. 使用Nginx防止IP地址被恶意解析

    web端服务以非80端口启动(无法直接通过IP地址访问到),Nginx配置一层正向代理,将域名转发到域名+端口 […]...

  4. js.ajax优缺点,工作流程 – 流浪的诗人

    js.ajax优缺点,工作流程 2016-01-06 16:28  流浪的诗人  阅读(583)  评论(0) […]...

  5. WebStorm 常用功能的使用技巧分享

    WebStorm 是 JetBrain 公司开发的一款 JavaScript IDE,使用非常方便,可以使编写 […]...

  6. SpringBoot系列——cache缓存

      前言   日常开发中,缓存是解决数据库压力的一种方案,通常用于频繁查询的数据,例如新闻中的热点新闻,本文记 […]...

  7. CAD画三维图怎么渲染?一分钟教你快速操作

      从事过CAD相关工作的都知道,CAD绘制的方式有二维平面图以及三维图形,三维图形,画三维图方式也是比较简单 […]...

  8. PHP抓取网络数据的6种常见方法

    本小节的名称为 fsockopen,curl与file_get_contents,具体是探讨这三种方式进行网络 […]...

展开目录

目录导航