Pythonで簡単なスパイダーを書く方法は?
-
05-07-2019 - |
質問
私はこのクモを何週間も書こうとしましたが、成功しませんでした。これをPythonでコーディングする最良の方法は何ですか:
1)初期URL:http://www.whitecase.com/Attorneys/List.aspx?LastName=A
2)初期URLからこの正規表現を使用してこれらのURLを選択します:
hxs.select('//td[@class="altRow"][1]/a/@href').re('/.a\w+')
[u'/cabel', u'/jacevedo', u'/jacuna', u'/aadler', u'/zahmedani', u'/tairisto', u
/zalbert', u'/salberts', u'/aaleksandrova', u'/malhadeff', u'/nalivojvodic', u'
....
3)これらの各URLに移動し、この正規表現を使用して学校情報をスクレイプします
hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)'
[u'JD, ', u'University of Florida Levin College of Law, <em>magna cum laude</em>
, Order of the Coif, Symposium Editor, Florida Law Review, Awards for highest
grades in Comparative Constitutional History, Legal Drafting, Real Property and
Sales, ', u'2007']
4)スクレイピングされた学校情報をschools.csvファイルに書き込みます
このスパイダーをPythonで書くのを手伝ってもらえますか?私はそれをScrapyで書こうとしましたが、成功しませんでした。以前の質問をご覧ください。
ありがとう。
解決
http://www.ibm.com/developerworks/linux/ library / l-spider / わかりやすい説明付きのIBM記事
または
http://code.activestate.com/recipes/576551/ Pythonクックブック、より良いコードですが、説明は少なくなります
他のヒント
また、読むことをお勧めします:
RegExはXHTML self以外のオープンタグに一致します-含まれるタグ
正規表現を使用してHTMLを解析する前に。次に、誰かの名前が強制的にページをlatin-1ではなくunicodeにしたときに初めて起こることを考えます。
編集:Pythonで使用するライブラリに関する質問に答えるには、 Beautiful Soupをお勧めします。 これは優れたHTMLパーサーであり、Unicode全体をサポートします(また、不正なHTMLについては非常に良い仕事をします。