当前位置:首页 » 编程语言 » python34urllib2

python34urllib2

发布时间: 2025-07-11 18:15:33

1. 如何用python爬虫获取那些价值博文

过程大体分为以下几步:

  • 1. 找到爬取的目标网址;

  • 2. 分析网页,找到自已想要保存的信息,这里我们主要保存是博客的文章内容;

  • 3. 清洗整理爬取下来的信息,保存在本地磁盘。

  • 打开csdn的网页,作为一个示例,我们随机打开一个网页:

    http://blog.csdn.net/u013088062/article/list/1。

    可以看到,博主对《C++卷积神经网络》和其它有关机计算机方面的文章都写得不错。

    1#-*-coding:UTF-8-*-
    2importre
    3importurllib2
    4importsys
    5#目的:读取博客文章,记录标题,用Htnl格式保存存文章内容
    6#版本:python2.7.13
    7#功能:读取网页内容
    8classGetHtmlPage():
    9#注意大小写
    10def__init__(self,strPage):
    11self.strPapge=strPage
    12#获取网页
    13defGetPage(self):
    14req=urllib2.Request(self.strPapge)#建立页面请求
    15rep=req.add_header("User-Agent","Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.122Safari/537.36SE2.XMetaSr1.0")
    16try:
    17cn=urllib2.urlopen(req)#网页请求
    18page=cn.read()#读网页
    19uPage=page.decode("utf-8")#网页编码
    20cn.close()
    21returnuPage
    22excepturllib2.URLError,e:#捕获异常
    23print'URLError:',e.code
    24return
    25excepturllib2.HTTPError,e:#捕获异常
    26print'HTTPError:'+e.reason
    27return
    28returnrePage
    29#正则表达式,获取想要的内容
    30classRePage():
    31#正则表达式提取内容,返回链表
    32defGetReText(self,page,recode):
    33rePage=re.findall(recode,page,re.S)
    34returnrePage
    35#保存文本
    36classSaveText():
    37defSave(self,text,tilte):
    38try:
    39t="blog\"+tilte+".html"
    40f=file(t,"a")
    41f.write(text)
    42f.close()
    43exceptIOError,e:
    44printe.message
    45if__name__=="__main__":
    46s=SaveText()
    47#文件编码
    48#字符正确解码
    49reload(sys)
    50sys.setdefaultencoding("utf-8")#获得系统的默认编码
    51#获取网页
    52page=GetHtmlPage("http://blog.csdn.net/u013088062/article/list/1")
    53htmlPage=page.GetPage()
    54#提取内容
    55reServer=RePage()
    56reBlog=reServer.GetReText(htmlPage,r'.*?(s.+?)')#获取网址链接和标题
    57#再向下获取正文
    58forrefinreBlog:
    59pageHeard="http://blog.csdn.net/"#加链接头
    60strPage=pageHeard+ref[0]
    61tilte=ref[1].replace('[置顶]',"")#用替换的功能去除杂的英文
    62tilte=tilte.replace(" ","").lstrip().rstrip()
    63#获取正文
    64htmlPage=GetHtmlPage(strPage)
    65htmlPageData=htmlPage.GetPage()
    66reBlogText=reServer.GetReText(htmlPageData,'(.+?)')
    67#保存文件
    68fors1inreBlogText:
    69s1=' '+s1
    70s.Save(s1,tilte)

2. python 的 re模块中如何使用变量代替要匹配的字符串

这么试试:
XH=raw_input("请输入你的手机型号:")
XH_re=re.compile(XH+'.*?¥(d{1,4})</em>',re.DOTALL)

3. python怎么做接口测试工具

之前使用过urllib和urllib2做接口测试,在做的途中,感觉使用urllib2直接进行的get,post 请求并没有那么好用。作为测试人员,所需要的测试工具应当以方便为第一要务,测试的耗时只要是真正的无人值守,耗时不是太久的都可以接受。所以,本人又尝试了一个新的包:requests。

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 !推荐一篇文章,上面有该包的详细说明传送门,以下只会写到我用到的部分,所以更多的了解需要自己去搜资料

好了,我们开始吧!!

接口测试中重要的部分:

1.get和post方法

2.用到的参数

3.请求头

4.cookie

5.日志输出

6.如何调试你的程序--借助fiddler

按照以上的顺序,我将一一说明我的搞法,因为编码能力有限,所以可能看着很low

一、get和post

requests包很好的实现了post和get方法,示例:

1 import requests2 response_get = requests.get(url, data, headers, cookies)3 response_post = requests.post(url, data, headers, cookies)

其他的访问方式如put,head等等,用法几乎都是如此,因为没用到,所以省略

现在一般的接口返回值有页面和json俩种,按照需求,可以分别使用response.text或者response.content获取,text获取的是unicode类型的返回值,而content返回值是str类型,所以我一般使用content来获取返回值,因为这样获取的返回值可以直接使用正则或者in的方式来验证返回值结果是否正确。

我自己为了实现接口的自动访问,所以又在requests上面加了一层封装,就像下面这样:

三、cookie

一款产品的接口测试中必定会使用登录状态,需要使用cookie实现,之前写过使用cookiejar获取cookie,requests中获取cookie的方法更为简单,不过首先你得知道是哪个接口set了cookie,不过一般是登录啦。登录接口访问之后set了cookie,那好,就去调用登录接口,然后拿到搞回来的cookie:

# 只需要这样!!login = requests.post(login_url, data=login_data, headers=login_header)
cookie = login.cookies

这个cookie就是登录状态了,拿着随便用,需要登录的就直接cookies=cookies

四、日志输出

这里注意看第二步中接口数据,有接口描述,也有接口是啥,第一步中又把content做成返回值了,具体拼接方式自己想吧,东西全有了,想写啥写啥,还可以加上获取本地时间的api获取接口运行时间,log文件该长啥样是门学问,这里就不献丑了。

五、借用fiddler调试你的脚本

requests允许使用代理访问,这有啥用,真有!fiddler是一款截包改包的工具,而且通过扩展可以进行请求间的比对,这样让你的程序访问的请求和真正正确的请求作对比,为啥我的程序访问出错?是不是缺了请求头?参数是不是丢了?cookie是不是少了?很容易看出来。写法如下:

proxies = { "http": "http://127.0.0.1:8888", "https": "http://127.0.0.1:8888"}
requests.post(url, proxies=proxies)

这样就可以走代理了,除fiddler以外还有charles和burp suite可以使用,具体看个人喜好吧。

热点内容
如何配置组合音响 发布:2025-07-12 12:53:54 浏览:93
c语言幂计算 发布:2025-07-12 12:52:36 浏览:566
兔费WLAN密码多少 发布:2025-07-12 12:50:59 浏览:861
阿里云分布式存储 发布:2025-07-12 12:45:04 浏览:535
sql日志压缩 发布:2025-07-12 12:39:53 浏览:343
红点角标算法 发布:2025-07-12 12:11:16 浏览:844
开心消消乐服务器繁忙什么情况 发布:2025-07-12 12:11:14 浏览:239
数据库的封锁协议 发布:2025-07-12 12:10:35 浏览:725
如何配置一台长久耐用的电脑 发布:2025-07-12 11:43:03 浏览:602
昆明桃源码头 发布:2025-07-12 11:38:45 浏览:569