Python读取网页表格数据

提示:网站及代码均已验证通过

文章目录

  • 前言
    • 2.编写代码
  • 总结


前言

在网上看到一个案例,但自己操作起来有一些问题,如SSL认证、CSV文件中文乱码、网站还需翻页,我通过chatGPT及baidu将代码进行了优化。供参考。

2.编写代码

代码如下(示例):

#request网站请求
import urllib.request
#BeautifulSoup获取网站源代码
from bs4 import BeautifulSoup
import pandas as pd
import csv
# 关闭ssl本地认证即可.访问的网站是https://,需要SSL认证,而直接用urllib会导致本地验证失败。
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

# 构造网址

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'}
df = pd.DataFrame() # 创建空的DataFrame对象

for page in range(1, 329): # 页码数+1 
    print(f'-------------------------正在爬取第{page}页内容-----------------------')
    url = f'https://sthjt.ah.gov.cn/site/label/8888?_=0.1920445148528911&labelName=publicInfoList&siteId=6788031&pageSize=15&pageIndex={page}&action=list&fuzzySearch=false&fromCode=title&keyWords=&sortType=1&isDate=true&dateFormat=yyyy-MM-dd&length=80&organId=21691&type=4&catIds=&cId=&result=%E6%9A%82%E6%97%A0%E7%9B%B8%E5%85%B3%E4%BF%A1%E6%81%AF&file=%2Fxxgk%2FpublicInfoList_newest2020&catId=32710201'
    # print(url)
    req = urllib.request.Request(url, headers=headers)  # 构建请求对象
    resp = urllib.request.urlopen(req)  # 使用urlopen打开请求
    # 解析源代码
    soup = BeautifulSoup(resp, "html.parser")
    links = soup.find("div", {"id": {"zdgkList"}})
    ss = links.find_all("a")    # 获取a标签
    for a in ss:
        link = a.get('href')
        tb = pd.read_html(link)[2]  # read_html可以直接获取网站表格
        df = pd.concat([df, tb], ignore_index=True)

    tb.to_csv("C:\\Users\\xyz\\Crawldata.csv", index=False, encoding="utf_8_sig", mode='a')    # mode='a'追加写入




总结

他山之时,可以攻玉。希望通过持续不断的学习与实践,我的python水平可以提升我的工作效率。

你可能感兴趣的:(python,开发语言)