4

データを .txt ファイルとしてエクスポートしようとしています

from bs4 import BeautifulSoup
import requests
import os

import os

os.getcwd()
'/home/folder'
os.mkdir("Probeersel6") 
os.chdir("Probeersel6")
os.getcwd()
'/home/Desktop/folder'
os.mkdir("img")  #now `folder` 

url = "http://nos.nl/artikel/2093082-steeds-meer-nekklachten-bij-kinderen-door-gebruik-tablets.html"
r  = requests.get(url)
soup = BeautifulSoup(r.content)
data = soup.find_all("article", {"class": "article"})

with open(""%s".txt", "wb" %(url)) as file:
    for item in data:
        print item.contents[0].find_all("time", {"datetime": "2016-03-16T09:50:30+0100"})[0].text 
        print item.contents[0].find_all("a", {"class": "link-grey"})[0].text
        print "\n"
        print item.contents[0].find_all("img", {"class": "media-full"})[0]
        print "\n"
        print item.contents[1].find_all("div", {"class": "article_textwrap"})[0].text
        file.write()

何を入れる必要があります:

file.write()

働く?

また、文字列でそれを行う必要があるURLと同じ.txtファイルの名前を取得しようとしていますか?

with open(""%s".txt", "wb" %(url)) as file:


url = "http://nos.nl/artikel/2093082-steeds-meer-nekklachten-bij-kinderen-door-gebruik-tablets.html"
4

2 に答える 2

4

コンテンツの中に入れる必要がありfile.writeます。私はおそらく次のようなことをします:

#!/usr/bin/python3
#

from bs4 import BeautifulSoup
import requests

url = 'http://nos.nl/artikel/2093082-steeds-meer-nekklachten-bij-kinderen-door-gebruik-tablets.html'
file_name=url.rsplit('/',1)[1].rsplit('.')[0]

r  = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
data = soup.find_all('article', {'class': 'article'})


content=''.join('''{}\n{}\n\n{}\n{}'''.format( item.contents[0].find_all('time', {'datetime': '2016-03-16T09:50:30+0100'})[0].text,
                                               item.contents[0].find_all('a', {'class': 'link-grey'})[0].text,
                                               item.contents[0].find_all('img', {'class': 'media-full'})[0],
                                               item.contents[1].find_all('div', {'class': 'article_textwrap'})[0].text,
                                             ) for item in data)

with open('./{}.txt'.format(file_name), mode='wt', encoding='utf-8') as file:
    file.write(content)
于 2016-03-16T15:38:33.127 に答える
0

私は Webscraping プロジェクトに取り組んでいましたが、この問題で多くの問題が発生しました。Pythonエンコーディングを扱うほとんどすべてのソリューションを試しました(string.encode()を使用してUTFに変換し、ASCIIに変換し、「unicodedata」モジュールを使用して変換し、.decode()を使用してから.encode()を使用し、血を犠牲にしますティム・ピーターズなど)。

常に機能するソリューションはありませんでした。これは、非常にPythonicではないことに気づきました。

それで、私が最終的に使用したのは次のとおりです。

html = bs.prettify()  #bs is your BeautifulSoup object
with open("out.txt","w") as out:
    for i in range(0, len(html)):
        try:
            out.write(html[i])
        except Exception:
            1+1

完璧ではありませんが、最高の結果が得られました。ブラウザで開いてみると、ほぼ毎回ちゃんとページをパースできました。

于 2016-03-16T17:20:34.067 に答える