python爬虫基础测试

1requests基本使用

主要有get/post/put三种方式,返回的是响应对象(response object):
res = resquests.get/post/put(url,params,data,...)
对于每种方式(method),其可传递的参数包括以下 额 好多种:

参数 说明 煮个小栗子
url 待获取页面的url链接 requests.get("http://tieba.baidu.com")
params 将字典或字节序列作为参数添加到url中 kw={"kw":"李毅"}
requests.get(url,params=kw)
# 得到的res为“http://tieba.baidu.com/f?kw=李毅”
data 字典,字节序列或文件对象,作为res的内容 待补充
headers 字典,HTTP定制头 header = {"User-Agent":"Mozilla/5.0"}
resq.get(url,headers=header)
timeout 设定超时时间,单位为秒
proxies 字典类型,设定访问代理服务器 proxie={"http:":"http://12.34.56.79:9527"}
resq.get(url,proxies=proxie)
verify 认证SSL证书开关,默认为False
json JSON格式的数据,作为resquests的内容
auth 元祖,支持HTTP认证功能
1.1 基本get请求
# ===============1、基本GET请求---百度搜索页=====================
kw = {'wd':'花梨'}
res_1 = requests.get('https://www.baidu.com/',params=kw,headers=headers)
# 网页内容乱码,默认编码是ISO-8859-1,修改
res_1.encoding = 'utf-8'

# 查看返回对象类型和内容---response对象
print(type(res_1))   # <class 'requests.models.Response'>
print(res_1.text)  # 返回的是Unicode格式的str数据
print(res_1.content)   # 返回的是二进制字节流(bytes)数据
#查看完整url地址,,响应头部字符编码 和响应码
print(res_1.url)     # https://www.baidu.com/
print(res_1.encoding)   # utf-8
print(res_1.status_code)  # 200
1.2 基本POST请求

对于POST请求,一般需要增加一些参数,最基本的利用data参数

# =======2、基本post请求,有道词典翻译==============
formdata = {
    "type":"AUTO",
    "i":"i love python",
    "doctype":"json",
    "keyfrom":"fanyi.web",
    "ue":"utf-8",
    "action":"FY_BY_ENTER",
    "typeResult":"true"
}
url_2 = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
res_2 = requests.post(url_2,data=formdata,headers=headers)
print(res_2.text)
print(res_2.json())  # json文件可以直接显示

1.3 与urllib urllib2的区别
  • (1)输入kw等参数时
    在requests中,params可以接收字典类型的参数
kw={"kw":"李毅"}
requests.get(url,params=kw)  # 此时requests自动将kw自动转为url形式

但是在urllib中:

kw={"kw":"李毅"}
kw = urllib.urlencode(kw)  #将字典形式转换为url编码格式(字符串)
newurl = url +"?"+ kw 
  • (2)返回html内容时
    在得到response对象后,res可以以两种形式返回网页内容
html = res.text  # 返回的是str格式的文本内容
html = res.content # 返回的是bytes格式的二进制字节流,可以用来存储图片等内容

而在urllib中,

res = urllib.request.urlopen(url)  # response对象
html = res.read()   
print(type(html))   # <class 'bytes'>
print(html)   # bytes格式
html = html.decode()   # 将bytes格式转为str
print(html)  # str格式

2 XPath解析html页面

2.0 前提知识

关于DOM、HTML、XML的简单概念和关系参考我写的另一篇杂文DOM 及 HTML和XML

2.1 基本流程
从url到content.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容