成都网站建设易维达好,网站空间 php程序,哈市那里网站做的好,数字营销软件PHP方式写的一团糟所以就用python3重写了一遍#xff0c;所以因为第二次写了#xff0c;思路也更清晰了些。提醒#xff1a;可能会有502的错误#xff0c;所以做了异常以及数据库事务处理#xff0c;暂时没有想到更好的优化方法#xff0c;所以就先这样吧。待更懂python再…PHP方式写的一团糟所以就用python3重写了一遍所以因为第二次写了思路也更清晰了些。提醒可能会有502的错误所以做了异常以及数据库事务处理暂时没有想到更好的优化方法所以就先这样吧。待更懂python再进一步优化哈欢迎留言赐教~#!C:\Users\12550\AppData\Local\Programs\Python\Python37\python.exe# -*- coding: utf-8 -*-from urllib.request import urlopenfrom bs4 import BeautifulSoupimport pymysqlimport urllib.requestimport refrom urllib.error import URLError, HTTPErrorconn pymysql.connect(host127.0.0.1, userroot, passwdroot, dbtest, charsetutf8)db conn.cursor()curr_url # 请求网页def get_html(url):global curr_urluser_agent Mozilla/6.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.6796.99 Safari/537.36response urllib.request.Request(url)response.add_header(User-Agent, user_agent)response urllib.request.urlopen(response)html BeautifulSoup(response.read(), html.parser, from_encodinggbk)return htmldef get_list(url, level1, pid0, get_level2):data [];level_arr {1: provincetr, 2: citytr, 3: countytr, 4: towntr, 5: villagetr}try:print(url)html get_html(url)c_url urltr_list html.findAll(tr, {class: level_arr[str(level)]})for tr in tr_list:region_name, href, page , , td_list tr.findAll(td)for td in td_list:region_name td.get_text();# 判断是否存在该省份if (level 1):sql select * from region where region_name region_name db.execute(sql)exist db.fetchone()if(exist):continue# 判断是否全数字-非法则跳过if (region_name.isdigit()):continueif (region_name):sql insert into region(region_name,pid,level,url) value( region_name , str(pid) , str(level) , url )db.execute(sql)db.execute(SELECT LAST_INSERT_ID();)last_id db.fetchone()[0]if (td.a):page td.a.attrs[href]pattern re.compile(r\w*.html)url re.sub(pattern, page, c_url)if (level get_level):get_list(url, level 1, last_id)# 每个省份执行完成则提交if (level 1):conn.commit()return data;except HTTPError as e:# 如果有出错则回滚conn.rollback()print(e) # HTTP Error 502: Proxy Errorurl http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/index.htmlget_list(url)print(执行完成)总结以上就是这篇文章的全部内容了希望本文的内容对大家的学习或者工作具有一定的参考学习价值谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接