【发布时间】:2020-01-21 06:08:44
【问题描述】:
我想从链接here 中迭代和提取表格,然后保存为 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)
#https://stackoverflow.com/questions/57842073/pandas-how-to-drop-rows-when-all-float-columns-are-nan
dfs = dfs.loc[:, ~dfs.replace(0, np.nan).isna().all()]
dfs.to_excel('test.xlsx', index = False)
它生成10 页面和1000 行,但是有些列值放错了位置,有人知道我哪里做错了吗?谢谢。
【问题讨论】:
-
您是否编写了任何代码来获取此数据?如果你这样做了,请将其与问题以及面临的问题(如果有)一起发布。
-
是的,必须知道您无法通过
bs4获取 javascript 注入数据。但是,如果您查看“网络”选项卡,则会有一个包含所有分页数据的 JSON API。您可以使用它直接获取您想要的数据。 -
您能帮忙修改一下代码吗? @ans2human
标签: pandas web-scraping python-requests web-crawler python-3.6