python爬取区划代码
时间: 2023-11-09 16:00:33 浏览: 128
您好,如果您想要Python爬取区划代码,可以使用requests和BeautifulSoup库来解析网页信息。以下是一个简单的爬取国家统计局的行政区划代码的示例代码:
```python
import requests
from bs4 import BeautifulSoup
url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
provinces = soup.select('.provincetr a')
for province in provinces:
print(province.text)
```
以上代码可以输出国家统计局行政区划代码中所有省份的名称。
相关问题
python链家爬取房源全过程
### Python 爬虫链家房源数据抓取教程
#### 准备工作
为了顺利进行链家网站上的房源信息爬取,需先安装必要的库。通常情况下,`requests`用于发送HTTP请求获取网页内容;而`BeautifulSoup`则负责解析HTML文档并提取所需的数据。
```bash
pip install requests beautifulsoup4 lxml
```
#### 获取页面URL
对于分页显示的结果集来说,每一页都有独特的URL模式可以遵循。例如,在成都地区查询二手房时,第i页对应的链接格式如下所示[^2]:
- `https://cd.lianjia.com/ershoufang/pg{i}/`
这使得程序能够轻易构建出指向不同页面的URL列表以便后续处理。
#### 发送请求与接收响应
利用`requests.get()`方法来发起GET类型的网络请求,并将返回的内容保存到变量中供下一步分析使用:
```python
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
}
def fetch_page(url):
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
print(f"Failed to retrieve page {url}")
return None
except Exception as e:
print(e)
return None
```
此函数会尝试访问给定网址并将服务器回应转换成字符串形式输出。如果遇到错误,则打印异常信息而不是抛出未捕获的异常终止整个应用程序运行。
#### 解析HTML结构
当获得了完整的HTML文本之后,就可以借助于`BeautifulSoup`来进行DOM树遍历查找特定标签内的文字或属性值了。这里列举了一些可能感兴趣的字段作为例子[^3]:
| 字段名称 | 描述 |
| --- | --- |
| 区域 | 所属行政区划 |
| 地址 | 物业具体位置描述 |
| 总价 | 卖方报价金额 |
| ... | 更多细节 |
下面是一个简单的示范代码片段展示如何定位这些元素的位置以及读取出它们所含有的信息:
```python
from bs4 import BeautifulSoup
def parse_html(html_content):
soup = BeautifulSoup(html_content, 'lxml')
items = []
for item in soup.select('.sellListContent li'):
info_dict = {}
title_tag = item.find('div', class_='title').find('a') or ''
info_dict['标题'] = title_tag.string.strip() if isinstance(title_tag, Tag) and hasattr(title_tag,'string') else ''
address_tags = item.select_one(".address .houseInfo").get_text().split("|")
info_dict.update(dict(zip(['户型','面积','朝向'], map(str.strip,address_tags))))
position_info = item.select_one(".flood .positionInfo a") or ''
info_dict["地址"] = str(position_info).strip()
price_total = item.select_one(".totalPrice span") or ''
info_dict["总价"] = float(price_total.string.replace(',','')) * 1e4
unit_price = item.select_one(".unitPrice span") or ''
info_dict["单价"] = int(unit_price.attrs.get("data-price", "").replace(",",""))
detail_url = item.find('a')['href']
info_dict["详情页"] = f"https://{detail_url}"
items.append(info_dict)
return items
```
上述逻辑通过CSS选择器匹配目标节点集合再逐一提取其内部的关键组成部分填充至字典对象里最后汇总形成最终结果数组。
#### 存储采集成果
考虑到实际应用中的需求差异较大,因此关于存储部分并没有给出具体的实现方案。不过一般而言,可以选择将其写入CSV文件、存入数据库亦或是其他任何形式适合长期保存的地方。
---
帮我获取全国行政区划代码,爬取的链接为:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2022/,保存为excel文本,写成代码
### 回答1:
我可以使用Python语言来帮助你爬取全国行政区划代码,并将它保存为Excel文本。下面是代码的示例:import requests
from bs4 import BeautifulSoup
import xlwturl = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2022/'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
table = soup.find('table', attrs={'class': 'tablediv'})wb = xlwt.Workbook()
ws = wb.add_sheet('Sheet1')row = 0
for tr in table.find_all('tr'):
col = 0
for td in tr.find_all('td'):
ws.write(row, col, td.text)
col += 1
row += 1wb.save('administrative_code.xls')
### 回答2:
你好,下面是我编写的爬虫代码,用于从指定链接获取全国行政区划代码并保存为Excel文本。
```python
import requests
import pandas as pd
url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2022/"
def get_data(url):
response = requests.get(url)
response.encoding = 'gbk' # 网页编码为gbk
return response.text
# 获取省级行政区划代码
def parse_province():
html = get_data(url)
# 使用pandas的read_html方法直接抓取表格数据
tables = pd.read_html(html, header=0)
df = tables[1] # 第二个表格是省级行政区划代码
return df
# 获取城市和区县级行政区划代码
def parse_city_district(url):
html = get_data(url)
tables = pd.read_html(html, header=0)
city_df = tables[0] # 第一个表格是城市代码
district_df = tables[1] # 第二个表格是区县代码
return city_df, district_df
# 保存数据到Excel文件
def save_to_excel(df, file_name):
writer = pd.ExcelWriter(file_name)
df.to_excel(writer, index=False)
writer.save()
if __name__ == "__main__":
province_df = parse_province()
save_to_excel(province_df, "行政区划代码.xlsx")
print("省级行政区划代码保存成功!")
for province_url in province_df['链接']:
city_df, district_df = parse_city_district(url + province_url)
save_to_excel(city_df, province_url.replace('.html', '') + "_城市代码.xlsx")
save_to_excel(district_df, province_url.replace('.html', '') + "_区县代码.xlsx")
print(province_url.replace('.html', '') + "城市和区县代码保存成功!")
```
以上代码使用requests库发送HTTP请求获取网页内容,使用pandas库的read_html方法解析网页中的表格数据,并将数据保存到Excel文件中。首先获取省级行政区划代码,并保存为"行政区划代码.xlsx"。然后根据省级行政区划代码的链接,获取每个省份下的城市和区县级行政区划代码,并分别保存到对应的Excel文件中。
### 回答3:
如果你想用代码获取全国行政区划代码并保存为Excel文本,可以使用Python编程语言和相应的库来完成这个任务。下面是一个简单的代码示例:
```python
import requests
import pandas as pd
from bs4 import BeautifulSoup
def get_province_codes():
url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2022/"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
provinces = []
province_codes = []
# 解析省份信息
province_table = soup.find('table', {'class': 'provincetable'})
for row in province_table.find_all('tr'):
cols = row.find_all('td')
if len(cols) > 0:
provinces.append(cols[1].text.strip())
province_codes.append(cols[0].text.strip())
data = {'省份名称': provinces, '省份代码': province_codes}
df = pd.DataFrame(data)
df.to_excel('行政区划代码.xlsx', index=False)
if __name__ == '__main__':
get_province_codes()
```
以上代码使用了`requests`库发送HTTP请求获取网页内容,使用`BeautifulSoup`库解析网页内容。首先,我们通过URL获取网页的HTML内容。然后,使用BeautifulSoup来解析HTML,并根据网页的结构提取出省份名称和省份代码。最后,使用pandas库将数据保存为Excel文件。
请注意,此代码示例仅仅演示了获取省份的行政区划代码并保存为Excel文件。如需进一步获取其他行政级别的行政区划代码,你需要自行根据网页结构进行相应的解析和处理。
阅读全文
相关推荐










