python - 我想提取从特定 txt 文件中给出的数据并将其保存在 excel 或任何电子表格应用程序中
问题描述
我编写了一个小脚本来从网站获取数据并将其存储在 txt 文件中,这样我就可以提取特定数据,然后将其存储在 Excel 工作表中。到目前为止,我只能在 python 中编写几行代码。我只是一个初学者。
#Importing modules
import requests
import json
#Program start here
######################
#loading required info for post request
pload = {'iec':'0200006797','name':'GLOBA'}
# Sending request to web
r = requests.post('http://dgft.delhi.nic.in:8100/dgft/IecPrint',data = pload)
#opening file for saving the extacted data
f = open("data.txt", "w+")
f.write(r.text)
#Opening file for reading and further manipulations
f=open("data.txt","r")
if f.mode == 'r':
contents = f.read()
所以我基本上想从中提取数据。我只想提取第一任主任的姓名和电话,第二任主任的姓名和电话,以及第三任主任的姓名和电话。数据采用 HTML 格式。此外,下面的 HTML 并不完整。有不止一个表,所以我只想从第一个表中提取数据,上面写着“Directors”。谢谢。
</TABLE>
<BR>
<BR>
<B>Directors:</B>
<BR>
<TABLE BORDER=1>
<TR><TD VALIGN= TOP ALIGN=LEFT COLSPAN=50>1.</TD><TD VALIGN= TOP ALIGN=LEFT COLSPAN=100>SANJAY CHAKRABORTY <BR>LATE PRASAD KUMAR CHAKRABORTY <BR>19 K K MUKHERJEE SARANI,SERAMPORE <BR> <BR>HOOGHLY,WEST BENGAL <BR>PIN-712204<BR>Phone/Email:919339624590 </TD></TR>
<TR><TD VALIGN= TOP ALIGN=LEFT COLSPAN=50>2.</TD><TD VALIGN= TOP ALIGN=LEFT COLSPAN=100>SANJAY DHANUKA <BR>BASUDEO DHANUKA <BR>BA -206,SECTOR-1,SALT LAKE,PS-BIDH <BR>ANNAGAR <BR>KOLKATA,WEST BENGAL <BR>PIN-700064<BR>Phone/Email:9674448777 </TD></TR>
<TR><TD VALIGN= TOP ALIGN=LEFT COLSPAN=50>3.</TD><TD VALIGN= TOP ALIGN=LEFT COLSPAN=100>ISHITA NANDI <BR>INDRANIL BURMAN ROY <BR>112, DR B C ROY SARANI,NEW BARRACK <BR>PORE <BR>KOLKATA,WEST BENGAL <BR>PIN-700131<BR>Phone/Email:9804561441 </TD></TR>
</TABLE>
解决方案
这是使用 lxml 和 xpath 的示例。这会将数据导出到 csv 文件。
from lxml import html
import requests
import pandas as pd
import csv
#loading required info for post request
pload = {'iec':'0200006797','name':'GLOBA'}
# Sending request to web
r = requests.post('http://dgft.delhi.nic.in:8100/dgft/IecPrint',data = pload)
tree = html.fromstring(r.content)
csvFile = open('directors.csv', 'w')
writer = csv.writer(csvFile)
writer.writerow(('name', 'phonenumber'))
#find name and phone and create a list
contacts =[]
items = tree.xpath("//table/tbody/tr")
for item in items:
names = item.xpath("//td[2]/text()[1]")
phones = item.xpath("//td[2]/text()[7]")
for name,phone in names,phones:
contacts.append(name,phone)
#opening file for saving the extacted data
for contact in contacts:
writer.writerow(contact)
csvFile.close()
推荐阅读
- python - 检查值是否遵循后续时间序列值的标准
- r - 有没有办法根据可变长列表过滤数据框?
- scala - 要求失败:重新排序中断 - Spark Cassandra
- dart - 卸载应用程序后,sharedpreferences 会发生什么情况?
- java - 有没有一种工具或方法可以根据 POST JSON 数据在 Java 控制器中自动生成所有 GET 获取请求 API 端点
- javascript - 如何使用通过 Javascript 加载的 Chrome 开发工具调试 Javascript 文件?
- c# - 在 Click 事件中通过 c# 文件重置样式值
- c# - 如何在c#中使用带有条件的selectman
- python - 如何禁止对烧瓶应用程序中的 POST 端点的非浏览器请求(用户代理)?
- r - 仅在第一次出现另一个模式之前查找模式(或:如何从混合效应模型的公式中删除随机效应)