在 Python 中迭代并从保存为 excel 文件的 Web 中提取表格
Iterate and extract tables from web saving as excel file in Python
我想从 link here 中迭代并提取 table,然后另存为 excel 文件。
我该怎么做?谢谢。
到目前为止我的代码:
import pandas as pd
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate
url = 'http://zjj.sz.gov.cn/ztfw/gcjs/xmxx/jgysba/'
res = requests.get(url)
soup = BeautifulSoup(res.content,'lxml')
print(soup)
新更新:
from requests import post
import json
import pandas as pd
import numpy as np
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
"Referer": "http://zjj.sz.gov.cn/projreg/public/jgys/jgysList.jsp"}
dfs = []
#dfs = pd.DataFrame()
for page in range(0, 10):
data = {"limit": 100, "offset": page * 100, "pageNumber": page + 1}
json_arr = requests.post("http://zjj.sz.gov.cn/projreg/public/jgys/webService/getJgysLogList.json", headers = headers, data = data).text
d = json.loads(json_arr)
df = pd.read_json(json.dumps(d['rows']) , orient='list')
dfs.append(df)
print(dfs)
dfs = pd.concat(dfs)
#
dfs = dfs.loc[:, ~dfs.replace(0, np.nan).isna().all()]
dfs.to_excel('test.xlsx', index = False)
它生成10
页和1000
行,但有些列值放错了位置,有人知道我哪里做错了吗?谢谢。
所以,使用来自 XHR 的 JSON
API 你可以做一个简单的 python post
通过 requests
请求并且你有你的数据。
在参数中有两个,您可以更改它们以获得不同的数据量,limit
是您在请求中获得的对象的编号。 pageNumber
是分页页计数器。
from requests import post
import json
url = 'http://zjj.sz.gov.cn/projreg/public/jgys/webService/getJgysLogList.json'
data = { 'limit' : '100', 'pageNumber' : '1'}
response = post(url, data=d)
response.text
此外,您可以根据需要使用 pandas
创建数据框或创建 excel。
我想从 link here 中迭代并提取 table,然后另存为 excel 文件。
我该怎么做?谢谢。
到目前为止我的代码:
import pandas as pd
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate
url = 'http://zjj.sz.gov.cn/ztfw/gcjs/xmxx/jgysba/'
res = requests.get(url)
soup = BeautifulSoup(res.content,'lxml')
print(soup)
新更新:
from requests import post
import json
import pandas as pd
import numpy as np
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
"Referer": "http://zjj.sz.gov.cn/projreg/public/jgys/jgysList.jsp"}
dfs = []
#dfs = pd.DataFrame()
for page in range(0, 10):
data = {"limit": 100, "offset": page * 100, "pageNumber": page + 1}
json_arr = requests.post("http://zjj.sz.gov.cn/projreg/public/jgys/webService/getJgysLogList.json", headers = headers, data = data).text
d = json.loads(json_arr)
df = pd.read_json(json.dumps(d['rows']) , orient='list')
dfs.append(df)
print(dfs)
dfs = pd.concat(dfs)
#
dfs = dfs.loc[:, ~dfs.replace(0, np.nan).isna().all()]
dfs.to_excel('test.xlsx', index = False)
它生成10
页和1000
行,但有些列值放错了位置,有人知道我哪里做错了吗?谢谢。
所以,使用来自 XHR 的 JSON
API 你可以做一个简单的 python post
通过 requests
请求并且你有你的数据。
在参数中有两个,您可以更改它们以获得不同的数据量,limit
是您在请求中获得的对象的编号。 pageNumber
是分页页计数器。
from requests import post
import json
url = 'http://zjj.sz.gov.cn/projreg/public/jgys/webService/getJgysLogList.json'
data = { 'limit' : '100', 'pageNumber' : '1'}
response = post(url, data=d)
response.text
此外,您可以根据需要使用 pandas
创建数据框或创建 excel。