import requests
from bs4 import BeautifulSoup
import re
source_url = requests.get('http://www.nytimes.com/pages/business/index.html')
div_classes = {'class' :['ledeStory' , 'story']}
title_tags = ['h2','h3','h4','h5','h6']
source_text = source_url.text
soup = BeautifulSoup(source_text, 'html.parser')
stories = soup.find_all("div", div_classes)
h = []; h2 = []; h3 = []; h4 =[]
for x in range(len(stories)):
for x2 in range(len(title_tags)):
hold = []; hold2 = []
hold = stories[x].find(title_tags[x2])
if hold is not None:
hold2 = hold.find('a')
if hold2 is not None:
hh = (((hold.text.strip('a'))).strip())
h.append(hh)
#h.append(re.sub(r'[^\x00-\x7f]',r'', ((hold.text.strip('a'))).strip()))
#h2.append(hold2.get('href'))
hold = []
hold = stories[x].find('p')
if hold is not None:
h3.append(re.sub(r'[^\x00-\x7f]',r'',((hold.text.strip('p')).strip())))
else:
h3.append('None')
h4.append(h)
h4.append(h2)
h4.append(h3)
print(h4)
皆さん。私はいくつかのデータを削りたいと思っていましたが、印刷出力が( ')を(â\ x80 \ x99)に置き換えていたことに気づいたときに、スクレーパーをほぼ完成させました。たとえば、「China's」を含むタイトルが「Chinaâ\ x80 \ x99s」に出ていました。私はいくつかの研究を行い、無駄のないデコード/エンコード(utf-8)を使用しようとしました。 str()でデコードを実行することはできません。私はre.subを使ってみましたが、私はそれを( '\ x80 \ x99)に置き換えることはできませんでしたが、私はそれを(')に置き換えませんでした。私は自然言語処理を使ってデータを解釈したいので、アポストロフィ大きく意味を変えようとしている。ヘルプは大いに感謝されます、私はこの1つのブロックをヒットしたような気がします。アポストロフィはâ x80 x99として印刷されています。
コード例の最後の行は、Python 3.xを意味します。 –
@CoryMadden:はい、そうです。したがって、オプション3はおそらく関連性がありません。 –
これらの基準のすべてが問題であったため、誤解しています。 –