python 模拟查询请求并处理返回结果
2014-09-09 11:26
537 查看
这是上周的任务了,今天总结下,任务描述如下,在数据表中存在查询词和城市id,需要利用查询词和城市名拼接成正确的url向某网站发送查询请求并对查询结果进行简单的解析,这里涉及城市名(中文)到城市拼音和缩写的转换问题,该转换本身并不复杂,但涉及中文处理,确实费了一番周折,对Python的编码问题还需要再进行深入的研究。下面主要说一下请求查询的过程,主要代码如下:
query = urllib.quote(line_list[0])
url = "http://"+short+".m***t***.com/s/" +query+"/all/all/hot"
conn = httplib.HTTPConnection("www.m***t***.com")
conn.request("GET",url)
r1 = conn.getresponse()
s1=r1.read()
hp1 = MyHTMLParser1()
hp1.feed(s1)
首先利用urllib.quote()方法对查询词进行编码,然后根据url的格式拼接成正确的url,再利用httplib.HTTPConnection方法跟服务器建立连接,之后向服务器发送get请求,最后利用MyHTMLParser()类对返回结果进行解析和处理,这里MyHTMLParser1()类继承HTMLParser,继承后需要可以根据需要重写其handle_starttag方法和handle_data方法:
class MyHTMLParser1(HTMLParser):
10 def __init__(self):
11 HTMLParser.__init__(self)
12 self.flag = 0
13
14 def handle_starttag(self, tag, attrs):
15 if tag == "span":
16 if len(attrs) == 0: pass
17 else:
18 for (variable, value) in attrs:
19 if variable == "class" and value=="count":
20 self.flag= 1
21 elif variable == "class" and value == "no-result-content":
22 self.flag = 0
23 #def handle_data(self,data):
24 #print self.flag
另外一种发送查询请求的方法如下:
quanpin = ""
107 if city_quanpin_dict.has_key(city_name2):
108 quanpin = city_quanpin_dict[city_name2]
109 if quanpin == "":
110 continue
111 url = "http://t.d***p***.com/"+quanpin+"?q="+query
112 i_headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1)Gecko/20090624 Firefox/3.5", "Accept": "text/plain"}
113 req = urllib2.Request(url,headers=i_headers)
114 re_data = urllib2.urlopen(req)
115 s2 = re_data.read()
116 hp2 = MyHTMLParser2()
117 hp2.feed(s2)
这种方法需要添加请求头来获得查询结果,对查询结果的处理方法同上。
query = urllib.quote(line_list[0])
url = "http://"+short+".m***t***.com/s/" +query+"/all/all/hot"
conn = httplib.HTTPConnection("www.m***t***.com")
conn.request("GET",url)
r1 = conn.getresponse()
s1=r1.read()
hp1 = MyHTMLParser1()
hp1.feed(s1)
首先利用urllib.quote()方法对查询词进行编码,然后根据url的格式拼接成正确的url,再利用httplib.HTTPConnection方法跟服务器建立连接,之后向服务器发送get请求,最后利用MyHTMLParser()类对返回结果进行解析和处理,这里MyHTMLParser1()类继承HTMLParser,继承后需要可以根据需要重写其handle_starttag方法和handle_data方法:
class MyHTMLParser1(HTMLParser):
10 def __init__(self):
11 HTMLParser.__init__(self)
12 self.flag = 0
13
14 def handle_starttag(self, tag, attrs):
15 if tag == "span":
16 if len(attrs) == 0: pass
17 else:
18 for (variable, value) in attrs:
19 if variable == "class" and value=="count":
20 self.flag= 1
21 elif variable == "class" and value == "no-result-content":
22 self.flag = 0
23 #def handle_data(self,data):
24 #print self.flag
另外一种发送查询请求的方法如下:
quanpin = ""
107 if city_quanpin_dict.has_key(city_name2):
108 quanpin = city_quanpin_dict[city_name2]
109 if quanpin == "":
110 continue
111 url = "http://t.d***p***.com/"+quanpin+"?q="+query
112 i_headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1)Gecko/20090624 Firefox/3.5", "Accept": "text/plain"}
113 req = urllib2.Request(url,headers=i_headers)
114 re_data = urllib2.urlopen(req)
115 s2 = re_data.read()
116 hp2 = MyHTMLParser2()
117 hp2.feed(s2)
这种方法需要添加请求头来获得查询结果,对查询结果的处理方法同上。
相关文章推荐
- 请求后台处理后,返回处理结果弹窗提示的几种方案
- Python中让MySQL查询结果返回字典类型的方法
- python爬虫:处理POST请求(获取有道翻译翻译结果)学习笔记
- oracle 函数 输入值,查询数据,返回相应处理结果
- 【python爬虫】根据查询词爬取网站返回结果
- Python模拟HTTPS请求返回HTTP 401 unauthorized错误
- 用python操作mysql数据库(之数据查询结果返回字典类型)
- Python入门:模拟登录(二)或注册之requests处理带token请求
- Python入门:模拟登录(二)或注册之requests处理带token请求
- zend ajax 处理请求和返回结果实例
- Python模拟HTTPS请求返回HTTP 401 unauthorized错误
- MYSQL存储过程查询返回结果处理方法
- python模拟登录或注册之requests处理带token请求
- hibernate实现多表查询处理返回多个对象结果
- Python中让MySQL查询结果返回字典类型的方法
- Python提交表单并处理返回结果
- python查询数据库结果返回
- Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理
- 返回结果一般如下: LAST_ACK 5 (正在等待处理的请求数) SYN_RECV 30 ESTABLISHED 1597 (正常数据传输状态) FIN_WAIT1 51 FIN_WAIT2 50
- Python Sqlite3以字典形式返回查询结果的实现方法