2016-08-29 14 views
-1

私はlxmlとxpathsについてよく知らないので、ウェブサイトからデータをスクラップする方法を学びたいと思っています。私がこのコードを実行すると、結果が得られず、理由もわかりません。それを修正するのを助けてください。ここlxmlのpythonを使用してウェブサイトからのURLとテキストをこする

コード

from lxml import html 
import requests 
pageLen=str(100) 
page = requests.get('http://www.yellowpages.com/search?search_terms=lawyer&geo_location_terms=usa&page=2') 
print(page) 
tree = html.fromstring(page.content) 
#phoneNumber = tree.xpath('//span[@class="c411Phone"]/text()') 
Link=tree.xpath('//div[@class="info"]/a/@href') 
Bname=tree.xpath('//a[@class="business-name"]/text()') 
print(Bussiness_names) 
print(Bname) 

HTMLコード

enter image description here

+0

美しいスープを使用したことはありますか? http://www.pythonforbeginners.com/python-on-the-web/web-scraping-with-beautifulsoup/ –

+0

私は美しい石鹸を試していませんでした。 lxmlを使ってリンクを抽出できないのですか? – Ibraham

+0

どのように動作するかわからない場合は、xpathsについて学び、lxmlのドキュメントを読む必要があります。 –

答えて

-1

間に合わせ:

from lxml import html 
import requests 

url = 'http://www.yellowpages.com/search?search_terms=lawyer&geo_location_terms=usa&page=2' 
page = requests.get(url) 
tree = html.fromstring(page.text) 
tree.make_links_absolute(url) 
for business in tree.xpath('//a[@class="business-name"]'): 
    print business.attrib['href'], business.text 
+0

私の場合はうまくいかず、全く結果が出ませんでした。 – Ibraham

+0

2番目のスクリプトをPython 2.7に変更しました。 –

+0

私はurlを変更しました。 – Ibraham

0

はあなたに@Abd Azradありがとうございます。あなたのソリューションは私を大いに助けました。

私をさらに案内してもらえますか?一貫性のないデータを扱う方法が混乱していますか? 郵便番号が見つからず、場所が不明になることがあります。私は自分の要求を満たしていないそのデータを無視したいだけです。
page = requests.get('http://www.yellowpages.com/search?search_terms=%s&geo_location_terms=%s&page=%s'%("lawyer","toronot","2")) tree = html.fromstring(page.text) bus_names=tree.xpath('//a[@class="business-name"]/text()') print bus_names ##bus_url=tree.xpath('//a[@class="business-name"]/href()') ##print bus_url street_ad=tree.xpath('//span[@class="street-address"]/text()') print(street_ad) loc=tree.xpath('//span[@class="locality"]/text()') print(loc) postal=tree.xpath('//span[@itemprop="postalCode"]/text()') print(postal) contact=tree.xpath('//div[@class="phones phone primary"]/text()') print(contact)

このように私はリストを取得しており、リストの長さは同じではないため、データを追跡できませんでした。リスト内のすべての人のデータと2dリスト[[person_one_name、person_one_address]、[person_two_name、person_two_contact]]の形式ですべてのデータを取得する方法はありますか?

+0

悲しいことに、このウェブサイトはこの種の継続的なヘルプのために設定されていません。私は新しい質問を投稿することをお勧めします。しかし、ここにいくつかの一般的なアドバイスがあります:辞書を使って各ビジネスを保存します(http://www.pythonforbeginners.com/dictionary/how-to-use-dictionaries-in-python)。 欠落しているデータを処理するには 'try'と' except'を使います(http://www.pythonforbeginners.com/error-handling/python-try-and-except)。 –

関連する問題