python3爬虫2019最新带番番滩平台全国地址信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python3爬虫2019最新带番番滩平台全国地址信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2822字,纯文字阅读大概需要5分钟。
内容图文
![python3爬虫2019最新带番番滩平台全国地址信息](/upload/InfoBanner/zyjiaocheng/844/6e4d181bb1034d7a801f7a08887454f0.jpg)
PHP方式写的2019最新带番番滩平台 QQ2952777280【话仙源码论坛】 hxforum.com 一团糟所以就用python3重写了一遍,所以因为第二次写了,思路也更清晰了些。
提醒:可能会有502的错误,所以做了异常以及数据库事务处理,暂时没有想到更好的优化方法,所以就先这样吧。待更懂python再进一步优化哈
欢迎留言赐教~
#!C:\Users\12550\AppData\Local\Programs\Python\Python37\python.exe
# -*- coding: utf-8 -*-
from urllib.request import urlopen
from bs4 import BeautifulSoup
import pymysql
import urllib.request
import re
from urllib.error import URLError, HTTPError
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='test', charset='utf8')
db = conn.cursor()
curr_url = ''
# 请求网页
def get_html(url):
global curr_url
user_agent = 'Mozilla/6.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.6796.99 Safari/537.36'
response = urllib.request.Request(url)
response.add_header('User-Agent', user_agent)
response = urllib.request.urlopen(response)
html = BeautifulSoup(response.read(), "html.parser", from_encoding='gbk')
return html
def get_list(url, level=1, pid=0, get_level=2):
data = [];
level_arr = {'1': 'provincetr', '2': 'citytr', '3': 'countytr', '4': 'towntr', '5': 'villagetr'}
try:
print(url)
html = get_html(url)
c_url = url
tr_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()):
continue
if (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 Error
url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/index.html'
get_list(url)
print('执行完成')
版权声明:本文为博主原创文章,转载请附上博文链接!
内容总结
以上是互联网集市为您收集整理的python3爬虫2019最新带番番滩平台全国地址信息全部内容,希望文章能够帮你解决python3爬虫2019最新带番番滩平台全国地址信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。