Web scraping 如何在csv中增加每个单元格中的数据以及一些问题[python]
我已经写了一个代码,可以从网页上抓取一些细节。我的问题是,每当我运行代码时,它都会打印输出,如下所示: |[“卡皮尔·萨拉瓦吉”ksdesigngroup@gmail.com“1412702594”]| |[“马建筑私人有限公司”studio@maarchitects.in“141429999”]| |[“帕布·达亚尔·卡诺西亚”prabhudayalkanojiya@yahoo.in''9829055412']| 但我希望它是这样的 |[“卡皮尔·萨拉瓦吉”ksdesigngroup@gmail.com''1412702594']| |['MA建筑私人有限公司'studio@maarchitects.in''141429999']| |['Prabhu Dayal Kanojiya'”prabhudayalkanojiya@yahoo.in''9829055412']| 就像在每个牢房里…我该怎么做 第二个问题,如何使我的代码看起来专业?我的编码风格不好吗?我该如何缩短它?下面是我的代码:Web scraping 如何在csv中增加每个单元格中的数据以及一些问题[python],web-scraping,beautifulsoup,python-3.6,Web Scraping,Beautifulsoup,Python 3.6,我已经写了一个代码,可以从网页上抓取一些细节。我的问题是,每当我运行代码时,它都会打印输出,如下所示: |[“卡皮尔·萨拉瓦吉”ksdesigngroup@gmail.com“1412702594”]| |[“马建筑私人有限公司”studio@maarchitects.in“141429999”]| |[“帕布·达亚尔·卡诺西亚”prabhudayalkanojiya@yahoo.in''9829055412']| 但我希望它是这样的 |[“卡皮尔·萨拉瓦吉”ksdesigngroup@gmai
import requests
from bs4 import BeautifulSoup
from urllib.request import urlopen
import csv
url = "http://www.rera-rajasthan.in/Home/ViewProject?id=JgMAAA"
html = urlopen(url)
soup = BeautifulSoup(html, "html.parser")
finaldata = []
data = soup.find_all("div", {"class":"panel-body"})
#filename = "Rajasthan.csv"
#f = open(filename, "r")
for i in data:# to get engineer
date = i.find_all("table", {"class":"table table-bordered"})
getname = date[21].find_all("td")
name = getname[1].text
email = getname[0].text
phone = getname[3].text
sublist = []
fname = [name, email, phone]
sublist.append(fname)
for i in data:# to extract architect
date = i.find_all("table", {"class":"table table-bordered"})
getname = date[20].find_all("td")
name = getname[1].text
email = getname[0].text
phone = getname[3].text
#sublist = []
fname = [name, email, phone]
sublist.append(fname)
for i in data:# to extract contractor
date = i.find_all("table", {"class":"table table-bordered"})
getname = date[19].find_all("td")
name = getname[1].text
email = getname[0].text
phone = getname[3].text
#sublist = []
fname = [name, email, phone]
sublist.append(fname)
finaldata.append(sublist)
with open("output.csv", "w")as csvfile:
writer = csv.writer(csvfile, delimiter=',',quotechar='|', lineterminator='\n')
for i in range(0, len(finaldata)):
writer.writerow(finaldata[i])
实现相同目标的较短代码:
import requests
from lxml import html
response = requests.get('http://www.rera-rajasthan.in/Home/ViewProject?id=JgMAAA')
tree = html.fromstring(response.content)
# Getting al <h3> tags with 'TableHeading' class
for heading in tree.xpath('//h3[@class="TableHeading"]'):
# Extracting <h3> heading name/text
heading_name = heading.xpath('text()')[0]
# Checking if <h3> heading name has one of these names
# We only want to get data from the table next to each one of them
if heading_name in ['CONTRACTOR', 'ARCHITECT', 'STRUCTURAL ENGINEER']:
# As each table heading has a table below (following-sibling) them
# We extract the data from that only table (table[1])
email, name, address, phone = heading.xpath('.//following-sibling::table[1]//tr/td/text()')
print [name, email, phone]
嘿这是非常好的编码…非常感谢你…我的编码风格差吗?如果是,我如何改进?@Bones先生,没问题。只要不断练习,阅读代码,你一定会提高你的编码技能。
['Prabhu Dayal Kanojiya', 'prabhudayalkanojiya@yahoo.in', '9829055412']
['MA ARCHICTECTS PRIVATE LIMITED', 'studio@maarchitects.in', '1414299999']
['Kapil Sarawagi', 'ksdesigngroup@gmail.com', '1412702594']