我正在学习 python,我正在尝试从https://www.zaubacorp.com/company-list/city-DELHI/status-Active/p-1-company.html网站上抓取一张表格。在这张表中,您可以看到“CIN”、“公司名称”、“Roc”和“状态”有 4 列。如您所见,“公司名称”是一个超链接,我需要 5 列“CIN”、“公司名称” ,“公司链接”,“大鹏”和“状态”。同样,我写了一个代码,但我只有 4 列,而不是“公司链接”,我得到了不同的结果。我正在分享我的输出 csv 的屏幕截图文件。
请帮我在“CIN”、“公司名称”、“公司链接”、“Roc”和“状态”的 5 列中抓取此表。这是我的代码,请找到我的输出 csv 文件的图像。
import csv
from bs4 import BeautifulSoup
import re
import html5lib
def find_between(s, first, last ):
try:
start = s.index( first ) + len( first )
end = s.index( last, start )
return s[start:end]
except ValueError:
return ""
loop = 1
while(True):
try:
URL = "https://www.zaubacorp.com/company-list/city-DELHI/status-Active/p-" + str(loop) + "-company.html"
loop=loop+1
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
tbody = soup.find('tbody')
rows = tbody.find_all('tr')
row_list = list()
for tr in rows:
row=[]
td = tr.find_all('td')
for a in td:
href=a.find('a',href=True)
if href==None:
row.append(a.text.strip())
print(a.text.strip())
else:
linktext = href.__getitem__
row.append(linktext)
row_list.append(row)
with open('zaubadata.csv', 'a') as csvFile:
writer = csv.writer(csvFile)
for r in row_list:
writer.writerow(r)
except Exception as obj:
print(obj)
csvFile.close()
break
[![result of above code in 4 columns][1]][1]
[1]: https://i.stack.imgur.com/oUVLK.png