模拟登陆网站需要的库是
request
重点内容是正则表达式
pattern =re.compile(r'{.*?}')
listlist=pattern.findall(findok.group())
还有eval函数也是很重要的。
aa= [eval(x) for x in listlist]
第一步设定好网址,并且模拟登陆,保存session。
cs_url = 'http://网址'
my_headers = {
'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding' : 'gzip',
'Accept-Language' : 'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4'
}
sss = requests.Session()
r = sss.get(cs_url, headers = my_headers)
获取跳转的网址内容
cs_url = 'http://网址'
r = sss.post(cs_url, headers = my_headers)
把post返回内容正常解码
a_str=r.text
搜索处理的代码块
xa_str=a_str[a_str.find(' '):a_str.find(' ')]
按照正则表达式和eval函数把代码块变成一个列表。
连接所有的列表。 all_list.extend(xueyuan_list)
all_list.extend(xueyuan_list)
all_list.extend(daijiao_list)
all_list.extend(jiaomi_list)
all_list.extend(zhuren_list)
生成序号,迭代列表的序号来生产sql的自动序号,不然sql没有自动序号不能恢复,这是一个bug啊。
zhongjian = [str(index+1) + ",'"+x[0]+"','" +x[1] +"','" +x[2] +"'" for index,x in enumerate(all_list)]
用join连接字符串。
zhongzhi = '),('.join(zhongjian)
最后收尾写入文件。
with codecs.open('zyys.sql','w','utf-8') as f2:
f2.write(tou + zhongzhi + wei)
print ('OK')
再上传到网站就可以肋,发现数据库更新后网站内容也更新了。而不是文件更新后需要刷新网站,只更新数据库可以省一个刷新网站的步骤。
这样就完成了所有任务。
做起来难的是登录网站,之前不会模拟登录,尝试跳转网站废了很多时间。今天却在response上面没整清楚,其实返回的内容用
.text处理后就自动解决中文问题了,而且还是utf-8的中文,更适合处理了。找到适合的正则表达式,用字符串截取也可以,看是不是唯一,是不是匹配下一步处理。
网友评论