题目描述
把这个程序爬取出的数据存入csv文件的程序
题目来源及自己的思路
自己写的程序~
相关代码
import urllib.request
import urllib.parse
import json
import re
import requests
class QueryPrice(object):
def __init__(self, who, weight):
self.who = int(who)
self.weight = int(weight)
self.url = "http://www.kuaidiwo.cn/freight/ajaxjg.php"
def get_response(self):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/63.0.3239.26 QQBrowser/10.0.1125.400'
}
data = {
'expid': self.who,
'provinceid': 9, #上海id
'cityid': 155, #浦东id
'toprovinceid': 1, #北京id
'tocityid': 41, #朝阳od
'weight': self.weight
}
html = requests.post(self.url, data, headers).text
'''
data = urllib.parse.urlencode(data, encoding='utf-8')
req = urllib.request.Request(self.url, data, headers)
resp = resp.read().decode('utf-8')
'''
return html
def get_result(self):
first = '上海浦东--> 北京朝阳 %dkg物品运费为:' %self.weight
html = self.get_response()
info = json.loads(html)
if info['data'] and info['jg']:
result1 = first + "%s 元\t%s " % (info['jg'], info['data'][0]['name'])
return result1
else:
result2 = first + "{0} 元\t未查询到此快递公司 id={1}".format(info['jg'], self.who)
return str(result2)
if __name__ == '__main__':
prices = []
for i in range(1, 50):
q = QueryPrice(i, 20)
result = q.get_result()
price = int(re.findall(r'(\d+)\s元', result)[0])
if price != 0:
print(result)
prices.append(price)
print('最便宜价格为: %s \n最贵价格为: %s' % (min(prices),max(prices)))
你期待的结果是什么?实际看到的错误信息又是什么?
能看到存入csv的程序和生成的csv文件~