从网址列表中刮取多个网址。获取每个URL后面的数据(文本),并写出文本文件

时间:2017-08-05 01:01:21

标签: r python-3.x web-scraping

我正在学习python(使用3.5)。我意识到我可能需要一点热情来发布我的问题。这里是:我已经完成了几百篇帖子,帮助文档等等,试图构建我需要的代码。到目前为止没有运气。我希望有一个人可以帮助我。我有一组网址说,18或更多。这里只说明了两个:
[1]“http://www.senate.mo.gov/media/15info/Chappelle-Nadal/releases/111915.html
[2]“http://www.senate.mo.gov/media/15info/Chappelle-Nadal/releases/092215.htm

我需要抓取每个网址后面的所有数据(文本)并写出单个文本文件(每个网址一个)以供将来的主题模型分析。现在,我使用rvest通过R拉入网址。然后我将每个url(一次一个,按代码)放入python并执行以下操作:

soup = BeautifulSoup(urlopen('http://www.senate.mo.gov/media/14info/chappelle-nadal/Columns/012314-Condensed.html').read())
txt = soup.find('div', {'class' : 'body'})
print(soup.get_text())
#print(soup.prettify())  not much help
#store the info in an object, then write out the object
test=print(soup.get_text())
test=soup.get_text()  
#below does write a file
#how to take my BS object and get it in
open_file = open('23Jan2014cplNadal1.txt', 'w')
open_file.write(test)
open_file.close() 

上面让我部分到达目标。它让我对文本有点清理,但没关系。问题是劳动密集型。

有没有办法

  1. 从R中写出一个干净的文本文件(没有隐形等)和所有列出的网址?
  2. 对于python 3.5:有没有办法获取所有网址,一旦它们在一个干净的单个文件(干净的文本文件,每行一个网址),并有一些迭代过程检索每个网址后面的文字并写将每个网址的数据(文本)的文本文件发送到我硬盘上的某个位置?
  3. 我必须为大约1000名州级参议员执行此流程。非常感谢任何帮助或指导。

    编辑原文:非常感谢你们所有人。致N. Velasquez:我尝试了以下方法:

    urls<-c("http://www.senate.mo.gov/media/14info/Chappelle-Nadal/releases/120114.html",         
    "http://www.senate.mo.gov/media/14info/Chappelle-Nadal/releases/110614.htm"          
    )
    
    for (url in urls) {
      download.file(url, destfile = basename(url), method="curl", mode ="w", extra="-k")
    }
    
    然后将 html文件写出到我的工作目录。但是,有没有办法写出文本文件而不是html文件?我已经阅读了download.file信息,似乎无法找出推出单个文本文件的方法。关于for循环的建议:我说明你对我的意思是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

1的答案是:当然! 以下代码将根据您的请求循环遍历html列表并导出原子TXT。 请注意,通过rvest和html_node(),您可以获得更多结构数据集,并且单独存储html的重复部分。 (标题,办公室信息,正文,网址等)

library(rvest)
urls <- (c("http://www.senate.mo.gov/media/15info/Chappelle-Nadal/releases/111915.html", "http://www.senate.mo.gov/media/15info/Chappelle-Nadal/releases/092215.htm"))


for (i in 1:length(urls))
    {
     ht <- list()
     ht[i] <- html_text(html_node(read_html(urls[i]), xpath = '//*[@id="mainContent"]'), trim = TRUE)
     ht <- gsub("[\r\n]","",ht)
     writeLines(ht[i], paste("DOC_", i, ".txt", sep =""))
}

在工作目录中查找DOC_1.txt和DOC_2.txt。