没得事就爬一下我喜欢的海贼王上的图片

须要在d盘下建立一个imgcache目录

# -*- coding: utf-8 -*-

import urllib
import urllib2 import json
from bs4 import BeautifulSoup
import threadpool
import thread
class htmlpaser:
def __init__(self):
self.url='http://1.hzfans.sinaapp.com/process.php'
#POST数据到接口
def Post(self,postdata):
# headers = {
# 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
# }
# data = urllib.urlencode(postdata)
# req = urllib2.Request(self.url,data,headers)
# resp = urllib2.urlopen(req,None,20)
# html = resp.read()
# return html
data = urllib.urlencode(postdata)
req = urllib2.Request(url, data)
html= urllib2.urlopen(req).read()
print html
#获取html内容
def GetHtml(self,url):
headers = {
'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
req = urllib2.Request(url,None,headers)
resp = urllib2.urlopen(req,None,5)
html = resp.read()
#return html.decode('utf8')
return html
def GetHtml2(self,url):
page = urllib.urlopen(url)
html = page.read()
page.close()
return html
def GetHtml3(self,url):
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept':'text/html;q=0.9,*/*;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding':'gzip',
'Connection':'close',
'Referer':None #注意假设依旧不能抓取的话,这里能够设置抓取站点的host
}
req_timeout = 5
req = urllib2.Request(url,None,req_header)
resp = urllib2.urlopen(req,None,req_timeout)
html = resp.read()
return html
def GetList(self,html):
soup = BeautifulSoup(''.join(html))
baseitem=soup.find('ul',{'class':'list'})
slist=baseitem.select('li a')
return slist def DownImg(self,imgurl):
path= r"d:/imgcache/"+self.gGetFileName(imgurl)
data = urllib.urlretrieve(imgurl,path)
return data
def gGetFileName(self,url):
if url==None: return None
if url=="" : return ""
arr=url.split("/")
return arr[len(arr)-1]
def mkdir(path):
import os
path=path.strip()
path=path.rstrip("\\")
# 推断路径是否存在
# 存在 True
# 不存在 False
isExists=os.path.exists(path)
# 推断结果
if not isExists:
# 假设不存在则创建文件夹
# 创建文件夹操作函数
os.makedirs(path)
return True
else:
# 假设文件夹存在则不创建,并提示文件夹已存在
return False
#返回两个值
def ParseContent(self,html):
soup = BeautifulSoup(''.join(html))
baseitem=soup.find('div',{'class':'showbox'})
title=soup.find('div',{'class':'msg'}).find('div',{'class':'m_left'}).get_text()
imglist=baseitem.find_all('img')
for img in imglist:
imgurl=img.get('src')
self.DownImg(imgurl)
content=baseitem.get_text().encode('utf8')
position=content.find('热点推荐')
return title,content[0:position] def ParseItem(self,item):
url=item.get('href')
if url==None:
return
#print url+'\n'
html=obj.GetHtml2(url)
title,content=obj.ParseContent(html)
#print title+'\n'
return title
def print_result(request, result):
print str(request.requestID)+":"+result obj=htmlpaser() pool = threadpool.ThreadPool(10)
for i in range(1,40):
url="http://op.52pk.com/shtml/op_wz/list_2594_%d.shtml"%(i)
html=obj.GetHtml2(url)
items=obj.GetList(html)
print 'add job %d\r' % (i)
requests = threadpool.makeRequests(obj.ParseItem, items, print_result)
[pool.putRequest(req) for req in requests]
pool.wait()

Python 实现的下载op海贼王网的图片(网络爬虫)的更多相关文章

  1. 【Python开发】【神经网络与深度学习】网络爬虫之python实现

    一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一 ...

  2. 【Python开发】【神经网络与深度学习】网络爬虫之图片自动下载器

    python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识(没看的赶紧去看)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap show ...

  3. 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘

    百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...

  4. 《Python Web开发实战》|百度网盘免费下载|Python Web开发

    <Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...

  5. 《精通Python网络爬虫》|百度网盘免费下载|Python爬虫实战

    <精通Python网络爬虫>|百度网盘免费下载|Python爬虫实战 提取码:7wr5 内容简介 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引 ...

  6. 豆瓣 9.0 分的《Python学习知识手册》|百度网盘免费下载|

    豆瓣 9.0 分的<Python学习知识手册>|百度网盘免费下载| 提取码:nuak 这是之前入门学习Python时候的学习资料,非常全面,从Python基础.到web开发.数据分析.机器 ...

  7. Python爬虫实例(六)多进程下载金庸网小说

    目标任务:使用多进程下载金庸网各个版本(旧版.修订版.新修版)的小说 代码如下: # -*- coding: utf-8 -*- import requests from lxml import et ...

  8. 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载

    19af543b068bdb7f27787c2bc69aba7f Additional Download (32-, 64-bit) Package r10 STL debug info androi ...

  9. Js批量下载花瓣网及堆糖网专辑图片

    插件作者:SaintIC 文章地址:https://blog.saintic.com/blog/256.html 一.安装 1. 安装Tampermonkey扩展,不同浏览器的支持,参见官网:http ...

随机推荐

  1. WCF技术剖析之二十一: WCF基本的异常处理模式[上篇]

    原文:WCF技术剖析之二十一: WCF基本的异常处理模式[上篇] 由于WCF采用.NET托管语言(C#和NET)作为其主要的编程语言,注定以了基于WCF的编程方式不可能很复杂.同时,WCF设计的一个目 ...

  2. perl 访问类方法的几种方式

    [root@wx03 test]# cat Horse.pm package Horse; use base qw(Critter); sub new { my $invocant = shift; ...

  3. xpath的文本获取

    xpath中tidyText()获取标签下所有文本, text()本级文本, allText()各级所有文本.

  4. http://www.cutt.com/

    简网APP工场-服务介绍 服务介绍

  5. JDK自己主动拆箱下,三目运算符的潜规则

    近期发现了一个非常诡异的NullPointerException,在以下这种方法抛出,一開始怎么都没想明确,dSrc即使为null,那直接赋值给distinct也没问题啊. private Doubl ...

  6. Eclipse用法和技巧十七:覆盖父类方法

    在学校里面学习java,遇到访问权限修饰符一直停留在public是公有的,外面可以访问:protected是对子类可见的,外部不可以访问:private仅在本类中可见.工作之后,接触到了java代码多 ...

  7. 重操JS旧业第五弹:函数

    函数在任何编程语言中起着非常重要的位置,因为他是功能的最小单元,在js中函数是一种类型 Function 1 申明与定义 显示声明:function cc(){};函数名其实是函数的一个指针,函数名某 ...

  8. java 变长參数使用原则

    1.java变长參数用...表示,如Print(String... args){  ... }; 2.假设一个调用既匹配一个固定參数方法.又匹配一个变长參数方法,则优先匹配固定參数的方法 3.假设一个 ...

  9. DM8168硬件平台

    DM8168硬件平台  作者:Marvin_wu TMS320DM8168是一款多核SoC,它集成了包含ARM Cortex A8.DSP C674X+.M3 VIDEO.M3 VPSS等处理器.DS ...

  10. Java加入背景音乐

    近期有几个师妹找我给她们的Java期末作业加入背景音乐,非常久不琢磨Java的我花费整晚才搞定,羞愧.在博客中记录下来.警示自己.也帮助一下大家. Java中能够通过AudioClip类来实现音乐播放 ...