爬虫

一 . 爬虫

https://www.charlesproxy.com/

是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。

主要功能

支持SSL代理。可以截取分析SSL的请求。

支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。

支持AJAX调试。可以自动将json或xml数据格式化,方便查看。

支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。

支持重发网络请求,方便后端调试。

支持修改网络请求参数。

支持网络请求的截获并动态修改。

检查HTML,CSS和RSS内容是否符合W3C标准。

https://www.autohome.com.cn/beijing/

charles破解版

Charles Proxy 4.1.2 破解版

http://charles.iiilab.com/ #破解注册

下载Charles Proxy 4.1.2版本,百度云盘下载 或 去官网下载

安装后先打开Charles一次(Windows版可以忽略此步骤)

在这个网站(http://charles.iiilab.com/)下载破解文件 charles.jar

替换掉原文件夹里的charles.jar

Mac: /Applications/Charles.app/Contents/Java/charles.jar

Windows: C:\Program Files\Charles\lib\charles.jar

恭喜!破解注册成功!

https://www.cnblogs.com/rrl92/p/7928770.html

01 . urllib路径爬虫网页

# 路径爬虫   网页爬虫
import urllib.request

# 向指定的url 地址发起请求 并返回服务器响应的数据(文件对象)
reponse=urllib.request.urlopen("http://www.baidu.com")


# 读取文件的全部内容
data=reponse.read() # 这打印出来类型是 # <class 'bytes'>
# data=reponse.read().decode("utf-8")  # 这打印出来类型是 <class 'str'>
print(data)
print(type(data))  

# 爬取到的文件写入保存到其他文件中
with open(r"E:\Studypython\网络爬虫\爬虫\file\a.html","wb") as f:

    f.write(data)

02 . urllib路径爬虫网页

# 路径爬虫   网页爬虫
import urllib.request


# 向指定的url 地址发起请求 并返回服务器响应的数据(文件对象)
reponse=urllib.request.urlopen("http://www.baidu.com")


# 读取一行网页数据
data=reponse.readline()

print(data)


# 爬取到的文件写入保存到其他文件中
with open(r"E:\Studypython\网络爬虫\爬虫\file\b.html","wb") as f:

    f.write(data)

03 . urllib路径爬虫网页

# 路径爬虫   网页爬虫
import urllib.request

# 向指定的url 地址发起请求 并返回服务器响应的数据(文件对象)
reponse=urllib.request.urlopen("http://www.baidu.com")

# 读取文件的全部内容     读取的数据赋值一个列表变量           但是是一list列表返回
data=reponse.readlines()

print(data)
print(type(data))    # <class 'list'>
print(len(data))     #750

print(type(data[100])) # <class 'bytes'> 转换成

print(type(data[100].decode("utf-8")))  #<class 'str'>
 
# 要把读取到<class 'bytes'> 转换成  <class 'str'>  才能写入文件


 # with open(r"E:\Studypython\网络爬虫\爬虫\file\c.html","wb") as f:
 #   f.write(jj)

04. respones属性

# 路径爬虫   网页爬虫
import urllib.request
# response 属性
 
# 返回当前环境的相关信息
print(response.info())

# 返回状态吗 200 或  304
print(response.getcode())

# if response.getcode()==200|response.getcode=304:
#     # 处理网页信息
#     pass5

# 返回当前正在爬取的url的地址
print(reponse.geturl())

05 . 编码解码

# 路径爬虫   网页爬虫
import urllib.request

url= r"https://www.so.com/s?q=miss%E6%B7%98%E5%AE%9D%E5%A4%96%E8%AE%BE%E5%BA%97&src=related_c&psid=bd268979ba059ff9fc986e37b74dd01b&eci=3aabe3c4e8106a9d&nlpv=rel_c_fasttext&fr=se7_newtab_new"

newUrl=urllib.request.unquote(url)
print(newUrl)
# https://www.so.com/s?q=miss淘宝外设店&src=related_c&psid=bd268979ba059ff9fc986e37b74dd01b&eci=3aabe3c4e8106a9d&nlpv=rel_c_fasttext&fr=se7_newtab_new



# 编码
newUrl2=urllib.request.quote(newUrl)
print(newUrl2)
# https%3A//www.so.com/s%3Fq%3Dmiss%E6%B7%98%E5%AE%9D%E5%A4%96%E8%AE%BE%E5%BA%97%26src%3Drelated_c%26psid%3Dbd268979ba059ff9fc986e37b74dd01b%26eci%3D3aabe3c4e8106a9d%26nlpv%3Drel_c_fasttext%26fr%3Dse7_newtab_new

06 . 爬取到的网页直接写入文件

# 路径爬虫   网页爬虫
import urllib.request

# 爬取到的网页直接写入文件
urllib.request.urlretrieve("http://www.baidu.com",filename=r"E:\Studypython\网络爬虫\爬虫\file\e.html")

# urlretrieve :在执行的过程当中 会馋流一些缓存

# 清除缓存
urllib.request.urlcleanup()

08 . 模拟浏览器1

# 路径爬虫   网页爬虫
import urllib.request


"""
User-Agent 模拟浏览器
User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Mobile Safari/537.36
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36

360 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 


Safari 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2


chrome 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36


chrome 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 

sogou浏览器 
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0 


UC浏览器 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36


IPhone 
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
"""

08模拟浏览器1

"""
User-Agent 模拟浏览器
User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Mobile Safari/537.36
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36

headers = {
    'Accept':'text/html, application/xhtml+xml, */*',
    'Referer':'http://网址.com:9090/jsFrame/login.aspx?login=login',
    'User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)',
    'Content-Type':'application/x-www-form-urlencoded',
    'Accept-Encoding':'gzip, deflate',
    'Host':'网址.com:9090',
    'Connection':'Keep-Alive',
    'Pragma':'no-cache'   

"""
# 路径爬虫   网页爬虫
import urllib.request

import random
url="http://www.baidu.com"

#01 模拟请求头:
#User-Agent 模拟浏览器
angetsList=[
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0 ",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"    ,
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 ",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0 "
]

agentStr=random.choice(angetsList)
# 02设置一个请求头
req=urllib.request.Request(url)
# 向请求体里添加 User- Agent
req.add_header("User-Agent",agentStr)
# # 03发起请求
re=urllib.request.urlopen(req)
data=re.read().decode("utf-8")
print(data)

08 . 模拟浏览器2

"""
User-Agent 模拟浏览器
User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Mobile Safari/537.36
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36

"""

# 路径爬虫   网页爬虫
import urllib.request

url="http://www.baidu.com"

#01 模拟请求头:
headers={
    
   " User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
}

# 02设置一个请求头
req=urllib.request.Request(url,headers=headers)


# 03发起请求
re=urllib.request.urlopen(req)

data=re.read().decode("utf-8")

print(data)

09. 爬虫设置超时

import urllib.request
# 如果网页没长时间相应就设置超时哈哈哈
# 系统判定  无法爬取



for ss in range(1,100):
   try :
         response=urllib.request.urlopen("http://www.baidu.com",timeout=0.5)
         print(len(response.read().decode("utf-8")))
   
   except:

         print("请求超时 继续下一个爬虫")

10. 爬虫发起http请求

http :使用场景

 

进行客服端和服务器端传递信息

GET: 通过url地址传递的信息 给服务器

POST : 可以向服务器 提交数据

PUT : 请求服务器 存储一个资源 通常要指定存储的位置

DELETE : 请求一个服务器删除一个资源

HEAD : 请求获取对应的http报头信息

OPTIONS: 可以获取当前utl 所支持的请求类型

11爬虫发起http请求get

# 发起http 协议:

#        GET     特点: 把数据拼接到请求路径的后面传递给服务器

#        优点: 速度快


#        缺点: 承载数据量小 不安全

# http://localhost:8088/index.html
import urllib.request

url="http://localhost:8088/index.html"

# # 03发起请求
re=urllib.request.urlopen(url)
data=re.read().decode("utf-8")

print(data)     

print(type(data))    #  <class 'str'    

12 爬虫psot请求 

 

"""post 请求:

特点: 把参数进行打包 单独传送 比较安全

优点: 数量大 安全 (当服务器数据进行修改时建议使用post)

缺点: 速度慢

"""

import urllib.request
import urllib.parse
url="http://localhost:8088/from"

# 将要发送的数据合成一个字典
# 字典的键取网址里找 一般为input 标签的name属性值
data={
"username":"sunck",
"passwd" :"666"
}
# 对要发送的数据进行打包 必须解码
postData=urllib.parse.urlencode(data).encode("utf-8")

 

# 请求体
req=urllib.request.Request(url,postData)

# 请求
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36Mozilla/4.0 (compatible; MSIE 5.5; Windows NT")

a=urllib.request.urlopen(req)

print(a.read().decode("utf-8"))

"""post 请求:

 

特点: 把参数进行打包 单独传送 比较安全

优点: 数量大 安全 (当服务器数据进行修改时建议使用post)

缺点: 速度慢

"""

import urllib.request
import urllib.parse
url="http://localhost:8088/from"

# 将要发送的数据合成一个字典
# 字典的键取网址里找 一般为input 标签的name属性值
data={
"username":"sunck",
"passwd" :"666"
}
# 对要发送的数据进行打包 必须解码
postData=urllib.parse.urlencode(data).encode("utf-8")

# 请求体
req=urllib.request.Request(url,postData)

# 请求
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36Mozilla/4.0 (compatible; MSIE 5.5; Windows NT")

a=urllib.request.urlopen(req)

print(a.read().decode("utf-8"))

13 爬虫psot请求

import urllib.request
import urllib.parse
import json
#这个是百度翻译api的地址
url = 'http://fanyi.baidu.com/v2transapi'
#准备一下头
headers = {
    'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
}
#还有我们准备用Post传的值,这里值用字典的形式
values = {
    'from': 'zh',
    'to': 'en',
    'query': '死肥猪',
    'transtype': 'translang',
    'simple_means_flag': '3'
}
#将字典格式化成能用的形式
data = urllib.parse.urlencode(values).encode('utf-8')
#创建一个request,放入我们的地址、数据、头
request = urllib.request.Request(url, data, headers)
#访问
html = urllib.request.urlopen(request).read().decode('utf-8')
#利用json解析包解析返回的json数据 拿到翻译结果
print(json.loads(html)['trans_result']['data'][0]['dst'])

14 ajax动态爬取数据

# https://movie.doudan.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=20&limit=20

# ajax 爬取豆瓣数据
import urllib.request
import ssl   # (来解决安全协议https)

import json
def ajaxCrawler(url):
    headers={
      "User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"

    }
    req=urllib.request.Request(url,headers=headers)

    # 来解决安全协议https  使用ssl来创建上下文
    context=ssl._create_unverified_context()

    a=urllib.request.urlopen(req,context=context)
    jsonStr=a.read().decode("utf-8")

    jsonData=json.loads(jsonStr)

    return jsonData

url="https://movie.doudan.com/j/chart/top_listtype=11&interval_id=100%3A90&action=&start=20&limit=20"

info=ajaxCrawler(url)

print(json)

 01 爬女装一号店

# http://search.yhd.com/c0-0/k%25E5%25A5%25B3%25E8%25A3%2585/
import urllib.request
def imageCrawler(url,toPath):
    headers={
               "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0 "
    }
    req=urllib.request.Request(url,headers=headers)
    re=urllib.request.urlopen(req)
    
    HtmlStr=re.read()
    with open(r"E:\Studypython\网络爬虫\爬虫练习\img\aa.html","wb")as f:
     f.write(HtmlStr)

url="http://search.yhd.com/c0-0/k%25E5%25A5%25B3%25E8%25A3%2585/"

toPath=r"E:\Studypython\网络爬虫\爬虫练习\img"
imageCrawler(url,toPath)

02爬取网络中qq号

# http://search.yhd.com/c0-0/k%25E5%25A5%25B3%25E8%25A3%2585/
# 
import urllib.request
def imageCrawler(url,toPath):
    headers={
               "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0 "
    }

    req=urllib.request.Request(url,headers=headers)
    re=urllib.request.urlopen(req)
    

    HtmlStr=re.read()
    with open(r"E:\Studypython\网络爬虫\爬虫练习\img\aa.html","wb")as f:
     f.write(HtmlStr)

url="http://search.yhd.com/c0-0/k%25E5%25A5%25B3%25E8%25A3%2585/"

toPath=r"E:\Studypython\网络爬虫\爬虫练习\img"
imageCrawler(url,toPath)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-02-11 14:23  Loversuperme  阅读(1598)  评论(0编辑  收藏  举报