python爬虫之基本类库

简单梳理一下爬虫原理:

  1、发送请求

    通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。

  2、获取响应内容

    如果服务器能正常响应(正常响应返回状态码通常为200),会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型

  3、解析返回的数据

    服务器返回的内容可以使html,也可以是json。如果是html,可以通过网页解析库和正则表达式解析html,得到想要的内容;若是json,则直接通过解析json数据

  4、保存数据

    解析得到目标数据后,进行保存,保存的方式根据自己的需求而定,可以使数据库(MySql,SQLServer,MongoDB,Redis),也可以是文本,如Excel,txt等

  以上介绍的是爬虫的基本原理,在实际爬取数据中,我们可能会遇到爬取需要登录的网站的数据(这里就需要用到获取登录的cookies,并在发送请求时当做参数传入,以保持登录的状态),还有可能会遇到反爬虫的一些情况(如封ip等)。

Python爬取数据基本类库之Urllib

  1)获取请求网页信息   

from urllib import request
response=request.urlopen("http://httpbin.org/")
print(response.read().decode("utf-8"))#response.read(),读取网页返回信息

#对于有些网站,直接请求网址,是获取不到想要的网页信息,还必须加入请求头(如:百度)
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5702.400 QQBrowser/10.2.1893.400", "Host":"http://www.baidu.com"}
req=request.Request(url='http://www.baidu.com',headers=headers)
response=request.urlopen(req)

  2)发送post请求

url="http://httpbin.org/post"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5702.400 QQBrowser/10.2.1893.400",
"Host":"httpbin.org"}
dict={ "name":"Germey"}
data=bytes(parse.urlencode(dict),encoding="utf8")
req=request.Request(url=url,data=data,headers=headers,method="POST")
response=request.urlopen(req)
print(response.read().decode("utf8"))

  3)设置代理

proxy_handler=urllib.request.ProxyHandler({
         "http":"http://127.0.0.1:8000",
         "https":"https://127.23.89.238:8000"
 })
opener=urllib.request.build_opener(proxy_handler)
response=opener.open("http://www.baidu.com")
print(response.read())

  4)获取请求cookie信息  

import http.cookiejar,urllib.request
cookie=http.cookiejar.CookieJar()
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)
response=opener.open("http://www.baidu.com")
for item in cookie:
     print(item.name+"="+item.value)

#cookie保存为文件对象
filename="cookie.txt"
cookie=http.cookiejar.MozillaCookieJar(filename)
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)
response=opener.open("http://www.baidu.com")
cookie.save(ignore_discard=True,ignore_expires=True)

#cookie以LWPC形式保存
filename="LWPCcookie.txt"
cookie=http.cookiejar.LWPCookieJar(filename)
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)
response=opener.open("http://www.baidu.com")
cookie.save(ignore_discard=True,ignore_expires=True)

#读取保存的cookie
cookie=http.cookiejar.LWPCookieJar()
cookie.load("LWPCcookie.txt",ignore_expires=True,ignore_discard=True)
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)
response=opener.open("http://www.baidu.com")
print(response.read().decode("utf8"))

  以上就是urllib的基本用法。

  

 

posted @ 2018-11-27 10:32  SUN-NEVER-SET  阅读(522)  评论(0编辑  收藏  举报