私は多くの投稿を見てきましたが、私が必要としているものを見つけられませんでした。最初に、私はPythonの初心者です(私はPython 2を使用しています)。Pythonでデータセットを作成して、Webを削る
ウェブページ(http://www.tdcj.state.tx.us/death_row/dr_executed_offenders.html)からデータを収集しようとしています。素敵なhtmlテーブルに注目してください。私はそれをあまり問題なくリストに読み込むことができました。ただし、リンクが2列あることにも注意してください。最初のリンク列を削除したいのですが(データがリストにあるので、これを行う方法がわかりません)。
第2リンク列はもう少し複雑です。私はタイトル "リンク"を "最後の声明"に置き換えたいと思います。次に、提供された各リンクを参照して、最後のステートメントを取得し、リストを作成した元のテーブルの対応する行に配置します。
最後に、このリストをタブ区切りファイルとして印刷して、データフレームとしてRに読み込むことができます。
これは、noobが処理するための多くです。この問題に正しく対応しているかどうか教えてください。以下は私がこれまでに持っていたコードです。私は何をしたいのか分からなくなっています。私はどのように始めたらよいかわからないからです。
from bs4 import BeautifulSoup
import requests
from lxml import html
import csv
import string
import sys
#obtain the main url with bigger data
main_url = "http://www.tdcj.state.tx.us/death_row/dr_executed_offenders.html"
#convert the html to BeautifulSoup
doc = requests.get(main_url)
soup = BeautifulSoup(doc.text, 'lxml')
#find in html the table
tbl = soup.find("table", attrs = {"class":"os"})
#create labels for list rows by table headers
headings = [th.get_text() for th in tbl.find("tr").find_all("th")]
#convert the unicode to string
headers = []
for i in range(0,len(headings)-1):
headers.append(str(headings[i]))
#access the remaining information
prisoners = []
for row in tbl.find_all("tr")[1:]:
#attach the appropriate header to the appropriate corresponding data
#also, converts unicode to string
info = zip(headers, (str(td.get_text()) for td in row.find_all("td")))
#append each of the newly made rows
prisoners.append(info)
#print each row of the list to a file for R
with open('output.txt', 'a') as output:
for p in prisoners:
output.write(str(p)+'\n')
output.close()
私が苦労している3つの部分のどれかを理解できたら、本当に感謝しています!
ありがとうございます。最初にRを試してみましたが、これは私がよく知っていることですが、xpathとsprintfで行っているパターンの一般化に役立つ適切な文書は見つかりませんでした。だから、私のコードはあなたがlast_urlsを持っているところで終わった。あなたは次回見ることができる場所について何か提案がありますか? – user1723196
私はその日に処理するSGMLが多いときにXPathを学びました。 XML/XPathは人々に飲酒を促すものなので、本当にしなければ深く掘り下げることはお勧めしません。私は、XPathと言ってCSSセレクターを作ったことができると確信していますが、残念ながらXPathで考えると思います。良いを得るための最良の方法は、練習することです。私は包括的な "料理本"のような参照を見ていないが、もし私が見つけたらここにメモを書き留める。 – hrbrmstr