【问题标题】:Web Scraper isn't filling up the .csv fileWeb Scraper 没有填满 .csv 文件
【发布时间】:2018-06-23 11:18:39
【问题描述】:

编写了一个简单的网络抓取脚本来解析某个新闻频道的推文。所以我希望它解析这些推文并将其写入.csv 文件中。该脚本似乎运行良好,但我只是不知道如何让它在各自的标题下写入“tweets”和“news_link”!

我错过了什么?

代码:

import urllib.request
import bs4
import csv

source = urllib.request.urlopen("https://twitter.com/abpnewstv").read()
soup = bs4.BeautifulSoup(source, "lxml")

with open("twitter news.csv", "w", newline="") as csvfile:
    news_writer = csv.writer(csvfile, delimiter=",")
    news_writer.writerow(["tweet", "news_link"])

for content in soup.find_all("div", {"class": "js-tweet-text-container"}):
    tweet = content.p.text.split(".")[0]
    print(tweet)
    try:
        news_link = content.a.text
    except AttributeError:
        pass

    print(news_link + "\n")

【问题讨论】:

    标签: python python-3.x csv twitter


    【解决方案1】:

    除了标题之外,您没有向 csv 文件写入任何内容 - 您只是打印到标准输出。您需要在 with 块内缩进 for 循环并使用 news_writer.writerow([tweet, news_link]) 而不是打印。

    【讨论】:

      【解决方案2】:

      您还需要执行两个步骤

      1. 将每条推文写成这样:

         news_writer.writerow([tweet, news_link])
        
      2. 确保这是在打开的 csv 文件的上下文管理器下完成的。

      完整列表:

      import urllib.request
      import bs4
      import csv
      
      source = urllib.request.urlopen("https://twitter.com/abpnewstv").read()
      soup = bs4.BeautifulSoup(source, "lxml")
      
      with open("twitter news.csv", "w", newline="") as csvfile:
          news_writer = csv.writer(csvfile, delimiter=",")
          news_writer.writerow(["tweet", "news_link"])
      
          for content in soup.find_all("div", {"class": "js-tweet-text-container"}):
              tweet = content.p.text.split(".")[0]
              print(tweet)
              try:
                  news_link = content.a.text
              except AttributeError:
                  pass
      
              print(news_link + "\n")
      
              news_writer.writerow([tweet, news_link])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-18
        • 2018-03-27
        • 2011-02-10
        • 2018-11-30
        相关资源
        最近更新 更多