代码之家  ›  专栏  ›  技术社区  ›  Horai Nuri

Python将spider数据放在excel文件中

  •  0
  • Horai Nuri  · 技术社区  · 9 年前

    我每天花1个小时对网站信息进行分类,所以我正在尝试构建一个python蜘蛛,它将从网站获取数据,并将其自动分类到excel文件中。

    我已经构建了获取数据的部分,但我不知道如何将它们与我正在使用的代码一起附加到excel文件中。

    这是代码:

    import requests
    from bs4 import BeautifulSoup
    import xlsxwriter
    
    def spider_list(max_pages):
        page = 2
        while page < max_pages:
            url = 'http://yellow.local.ch/fr/q/Morges/Bar.html?page=' + str(page)
            source_code = requests.get(url)
            plain_text = source_code.text
            soup = BeautifulSoup(plain_text, 'html.parser')
            for link in soup.findAll('a', {'class':'details-entry-title-link'}):
                href = link.get('href')
                spider_data(href)
            page += 1
    
    def spider_data(item_url):
        source_code = requests.get(item_url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, 'html.parser')
        for items in soup.findAll('h1'):
            print("\n" + items.string)
        for num in soup.findAll('a', {'class':'number'}):
            print(num.string)
        for mail in soup.findAll('a', {'class':'redirect'}):
            print(mail.string)
    
    
    spider_list(3)
    

    每组信息应水平显示,这里有一个示例:

    excel table

    我该怎么做? -----------编辑-----------

    好了,现在我创建了代码的最后一部分,但它不起作用,为什么?

    def spider_data(item_url):
        source_code = requests.get(item_url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, 'html.parser')
    datas = []
    for items in soup.findAll('h1'):
        datas.append(items.string)
    for num in soup.findAll('a', {'class':'number'}):
        datas.append(num.string)
    for mail in soup.findAll('a', {'class':'redirect'}):
        datas.append(mail.string)
    csv_create(datas)
    
    def csv_create(data):
        myfile = open('mydatas.csv', 'wb')
        wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
        wr.writerow(data)
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   Cody Braun    9 年前

    Excel可以读取.csv文件。如果您有这样的文本行:“Title1,number1,website1\n”,您将得到一个这样的excel文件。您可以使用python的内置 csv methods 或构建panda DataFrame并使用 to_csv (这样就不用担心写逗号和换行符了)。希望这有帮助

        2
  •  0
  •   Paul Würtz    9 年前

    使用csv当然是一种简单的方法,但可能会很麻烦。(当使用引号或以你没有参加的方式格式化数据时)。默认情况下,0点7分为白天。

    我向您推荐这个漂亮的库,我认为它更健壮,因此它可以设置数据类型,您可以按名称访问单元格,而无需对逗号进行编号。

    Python library for MS-excel creation