1、使用urllib.request模块实现爬虫
import urllib.request
url="http://www.2345.com" #请求该url,并返回页面数据 data=urllib.request.urlopen(url) #将data数据读取出来 html=data.read() print(html)
#将网页放入一个文件 file=open("F:/1.html",'wb') file.write(html) file.close()
2.1、模拟浏览器访问url(使用opener对象的addhandlers属性
import urllib.request """模拟浏览器访问url的过程,对url进行访问 首先,创建opener对象(参数为handlers), 其次,使用opener对象的属性添加请求头(addheaders), 最后使用opener的open方法()/urllib.request的urlopen()方法请求页面数据 """ #页面的url url="http://www.2345.com" opener=urllib.request.build_opener() #添加opener的请求头(列表形式) header=("User-Agent","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36") opener.addheaders=[header] #使用opener的open()方法,访问url data=opener.open(url).read()
#将data存入文件中 file=open("F:/2.html",'wb') file.write(data) file.close()
2.2、模拟浏览器访问url(使用Request对象的add_handler()方法)
import urllib.request """模拟浏览器访问url的过程,对url进行访问 首先,使用Request(url)方法创建一个Requet对象, 其次,使用Request对象的add_header()方法添加请求头 最后,使用urllib.request的urlopen(Request对象)方法访问 """
#url url="http://www.2345.com" #创建一个Request对象 req=urllib.request.Request(url) #创添加Request对象的add_header()方法(有两个参数) req.add_header("User-Agent","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36") #使用浏览器模拟访问url ht=urllib.request.urlopen(req) #将访问后的页面读取出来 data=ht.read()
#将data存入文件中 file=open("F:/3.html",'wb') file.write(data) file.close()
3、使用get请求爬取页面
import urllib.request """使用get请求进行访问url 首先,构建对应的url(该url包含get请求的字段名和字段内容等信息,且url必须是get请求的形式) 其次,使用urllib.request.Request(url)创建一个Request对象, 最后使用urlopen()方法访问该url """
#提取出对应key的value值 value="古风" #对对应的value值进行网址编码 value1=urllib.request.quote(value) #构造可以改变的url url="https://www.sogou.com/sogou?pid=sogou-site-488e4104520c6aab&ie=utf8&query="+value1 #创建Reauest对象 req=urllib.request.Request(url) #访问对应的url ht=urllib.request.urlopen(req) #将页面读取到data data=ht.read()
#将data存入文件中 file=open("F:/5.html",'wb') file.write(data) file.close()
4、使用post请求访问页面
import urllib.request import urllib.parse """使用post请求进行访问url(即点击提交按钮后,跳转到的页面就是处理post表单数据的url) 首先,设置对应的url(即post表单的数据会被提交并进行处理的url), 其次,构件post的表单数据(是一个字典对象)–查看网页源代码的表单的属性,并使用urllib.request.urlencode(), 然后,创建Request对象, 最后,使用urllib.request.urlopen(Request对象)方法访问一个url """
#处理表单数据的url url="http://www.iqianyue.com/mypost/" #将post表单的属性表示为字典对象,并进行编码 post={"name":"aas","pass":"123456"} post1=urllib.parse.urlencode(post).encode('utf-8') #创建一个Request对象 req=urllib.request.Request(url,post1) #访问url ht=urllib.request.urlopen(req) data=ht.read()
#将data存入文件中 file=open("F:/6.html",'wb') file.write(data) file.close()
5、使用代理IP访问url
import urllib.request import urllib.parse """使用代理ip访问url 首先,创建handler 其次,使用urllib.request.build_opener(handlers)方法, 最后,使用urllib.request.urlopen(url)/opener的open(url)方法方法访问url """ #url url="http://www.2345.com" #创建ProxyHandler(代理handler) handler=urllib.request.ProxyHandler({'http':"代理IP地址"}) #创建opener对象 opener=urllib.request.build_opener(handler,urllib.request.HTTPHandler) #创建全局默认的opener对象 opener1=urllib.request.install_opener(opener) #访问url ht=urllib.request.urlopen(url) #将页面数据读取到data datat=ht.read()
#将data存入文件中 file=open("F:/6.html",'wb') file.write(data) file.close()
6、使用cookie进行登录
import urllib.request import http.cookiejar import urllib.parse """使用cookie会话跟踪,进行访问url 首先,创建对应的Request对象(post请求) 首先,创建CookieJar对象 其次,创建cookie的handler 然后,创建opener对象,并创建全局的opener 最后,访问url """
#url url1="http://www.2345.com/post" #创建post post=urllib.parse.urlencode({post数据–字典}).encode() #创建Request对象 req=urllib.request.Request(url1,post)
#创建CookieJar对象 cookiejar=http.cookiejar.CookieJar() #创建cookie的handler handler=urllib.request.HTTPCookieProcessor(cookiejar) #创建opener opener=urllib.request.build_opener(handler) urllib.request.install_opener(opener) #访问url1(登录页面) opener.open(req)
#url2 url2="http://www.2345.com/post/index1" #访问登录页面下的另一个页面url2 urllib.request.urlopen(url2)
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试