爬虫
一 . 爬虫
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)