Web scraping 如何在csv中增加每个单元格中的数据以及一些问题[python]

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

我已经写了一个代码,可以从网页上抓取一些细节。我的问题是,每当我运行代码时,它都会打印输出,如下所示:

|[“卡皮尔·萨拉瓦吉”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']|

就像在每个牢房里…我该怎么做

第二个问题,如何使我的代码看起来专业?我的编码风格不好吗?我该如何缩短它?下面是我的代码:

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']