Python 试图将JS数据从网页输出到.html输出文件
我已经成功地将JS中列出的网站刮到了一个本地的.html文件中,但是输出不足 这些问题是:Python 试图将JS数据从网页输出到.html输出文件,python,html,json,python-3.x,beautifulsoup,Python,Html,Json,Python 3.x,Beautifulsoup,我已经成功地将JS中列出的网站刮到了一个本地的.html文件中,但是输出不足 这些问题是: 它只生成最后一个查询(audioSource),而不生成其他请求 它只找到第1集,就停在那里。我如何让它重复,直到找到终点 非常感谢 import requests import json from bs4 import BeautifulSoup JSONDATA = requests.request("GET", "https://thisiscriminal.com/wp-json/crimi
- 它只生成最后一个查询(audioSource),而不生成其他请求
- 它只找到第1集,就停在那里。我如何让它重复,直到找到终点
import requests
import json
from bs4 import BeautifulSoup
JSONDATA = requests.request("GET", "https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1")
JSONDATA = JSONDATA.json()
for line in JSONDATA['posts']:
soup = BeautifulSoup(line['episodeNumber'],'lxml')
soup = BeautifulSoup(line['title'],'lxml')
soup = BeautifulSoup(line['image']['large'],'lxml')
soup = BeautifulSoup(line['excerpt']['long'],'lxml')
soup = BeautifulSoup(line['audioSource'],'lxml')
with open("output1.html", "w") as file:
file.write(str(soup))
这里的问题是:
w
将整个文件替换为更新的文本soup
bs4
模块来解析json数据pandas
模块并创建数据帧。
使用pip:pip安装pandas
或conda:conda安装pandas
然后,您可以使用数据帧
,并根据需要使用它
import requests
import json
import pandas as pd
import os
JSONDATA = requests.request("GET", "https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1")
JSONDATA = JSONDATA.json()
df = pd.DataFrame(JSONDATA)
filename = 'Output.txt'
os.mknod(filename) #create the filename above.
with open(filename, 'a') as fopen:
for i in range(len(df)):
fopen.writelines(df.posts[i]['episodeNumber']+'\n')
fopen.writelines(df.posts[i]['title']+'\n')
fopen.writelines(df.posts[i]['image']['large']+'\n')
fopen.writelines(df.posts[i]['excerpt']['long']+'\n')
fopen.writelines(df.posts[i]['audioSource']+'\n')
fopen.writelines("\n")
fopen.close()
这是您需要的完整代码。此外,您还可以使用
print(df.head())
查看数据框如何将值存储为字典,并执行更多操作
输出:
您可以使用
pandas
库查看全文,将数据保存到当前项目目录下的CSV
文件中
import requests
import pandas as pd
resp = requests.get("https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1").json()
df = pd.DataFrame(resp['posts'], columns=['episodeNumber', 'title', 'image','excerpt','audioSource'])
#it will save data into post csv file and stored in current project directory
df.to_csv("posts.csv")
谢谢运行该命令时会出现以下输出错误:fopen.writelines(df.posts[i]['extract']['long']+'\n')中的文件“/test4.py”第19行类型错误:writelines()参数必须是它生成文件的字符串序列,但只生成前3个输出,并且没有摘录或音频源链接?而且,它只产生第一个结果-即第116集,我如何让它重复到最后,即第1集?这是不言自明的。您需要传递字符串值。因此,您可以执行
fopen.writelines(str(df.posts[i]['extract']['long']+'\n'))