Python 实现的下载op海贼王网的图片(网络爬虫)
没得事就爬一下我喜欢的海贼王上的图片
须要在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海贼王网的图片(网络爬虫)的更多相关文章
- 【Python开发】【神经网络与深度学习】网络爬虫之python实现
一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一 ...
- 【Python开发】【神经网络与深度学习】网络爬虫之图片自动下载器
python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识(没看的赶紧去看)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap show ...
- 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘
百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...
- 《Python Web开发实战》|百度网盘免费下载|Python Web开发
<Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...
- 《精通Python网络爬虫》|百度网盘免费下载|Python爬虫实战
<精通Python网络爬虫>|百度网盘免费下载|Python爬虫实战 提取码:7wr5 内容简介 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引 ...
- 豆瓣 9.0 分的《Python学习知识手册》|百度网盘免费下载|
豆瓣 9.0 分的<Python学习知识手册>|百度网盘免费下载| 提取码:nuak 这是之前入门学习Python时候的学习资料,非常全面,从Python基础.到web开发.数据分析.机器 ...
- Python爬虫实例(六)多进程下载金庸网小说
目标任务:使用多进程下载金庸网各个版本(旧版.修订版.新修版)的小说 代码如下: # -*- coding: utf-8 -*- import requests from lxml import et ...
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
19af543b068bdb7f27787c2bc69aba7f Additional Download (32-, 64-bit) Package r10 STL debug info androi ...
- Js批量下载花瓣网及堆糖网专辑图片
插件作者:SaintIC 文章地址:https://blog.saintic.com/blog/256.html 一.安装 1. 安装Tampermonkey扩展,不同浏览器的支持,参见官网:http ...
随机推荐
- Ch02 从零开始实例学习5
演练:添加模型 原文链接:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model ...
- Got a packet bigger than 'max_allowed_packet' bytes With statement Mysql终端数据同步不成功解决办法
在做两个数据库数据拷贝的时候,遭遇 1153 - Got a packet bigger than 'max_allowed_packet' bytes With statement: 遇到这个问题, ...
- SQL模板和模板实例化
需求:需要得出一个数据源DataTable,我已知SQL和HttpRequest如何,通过SQL模板的方式去实例化匹配HttpRequest中的参数实例化为查询SQL,最后返回DataTable 1. ...
- perl 为什么要用引用来做对象呢?
perl 为什么要用引用来做对象呢? 因为一个重要的原因是 my 引用 脱离作用域,外部仍旧生效
- 公交线路免费api接口代码
描写叙述:本接口主要是依据城市名称 + 线路名称 模糊查找城市公交线路信息. 开源api接口:http://openapi.aibang.com/bus/lines?app_key=keyvalue ...
- 执行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”
sh脚本例如以下: #!/usr/bin/env bash county="3 4 5 6 7 8 9 10 11 12 16 29 39 44 53 62 72 84 97 115 128 ...
- 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)
课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...
- poj 2299 逆序数
http://poj.org/problem?id=2299 坑:答案是long long 输出……!!!!! 题意是:求一个数组进行冒泡排序交换的次数 题解:求逆序数 题解Ⅰ: 归并排序求逆序数 归 ...
- hdu 3350
hdu 3350 题意:让你求运算式的结果和运算过程中加法的次数 (a) > (b) ? (a) : (b) 大于取a,小于等于取b MAX( 1 + 2 , 3) 因为(a) > (b) ...
- STM8S EEPROM 操作
STM8S 内置EEPROM,对于非常大须要带记忆的产品来说,是个非常好的资源,下面是我个人摸索出来的,而且验证OK,大家如须要可放心使用. #define EEPROMADDR0X000 ((u32 ...