2016-11-18 17 views
-1

私はPythonとWebスクレイピングの初心者ですが、私は本当に興味があります。私がしたいのは、1日あたりの検索結果の総数を抽出することです。Pythonを使用して合計検索結果をスクラップする方法

あなたがそれを開くと、あなたがここに表示されます。販売のための

中古車 結果1 - 30376

の20私が欲しいものはわずか数30376です。それを毎日自動的に抽出し、それをExcelファイルに保存する方法はありますか?私はPythonでいくつかのパッケージを中心にプレイしてきたが、私が得たすべてのエラーメッセージと以下のような関連性がないものです。

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

base_url = "..." 

def make_soup(url): 
    html = urlopen(url).read() 
    return BeautifulSoup(html, "lxml") 

make_soup(base_url) 

誰かがその特定の数をしてください抽出する方法を私を見ることができますか?ありがとう!

+0

感謝。彼らはすべて働いた!私のもう一つの質問は、その日の日付と一緒にその数字を既存のExcelファイルに正確にする必要があるということです。このファイルには、過去数ヶ月にわたって手動で抽出した番号がすでにあります。表には、日付、数値の2つの列があります。これは可能ですか?再度、感謝します! – Sunshine

+0

どこから日付を取得しますか? HTML DOMオブジェクトにはDateも含まれていますか? – MYGz

+0

こんにちはモハマド、尋ねてくれてありがとう! HTMLをチェックしましたが、日付情報は表示されませんでした。それで、それは日付を得ることはできないということですか?そうでない場合は、それでいいですが、出力番号を既存のExcelファイルに保存するにはどうすればよいですか?可能であれば番号の列の下に移動したいと思っています:)もう一度ありがとう! – Sunshine

答えて

0

ここでは、requestsモジュールとsoup.selectの機能があります。

from bs4 import BeautifulSoup 
import requests 

base_url = "http://www.autotrader.co.nz/used-cars-for-sale" 

def make_soup(url): 
    html = requests.get(url).content 
    soup = BeautifulSoup(html, "lxml") 
    txt = soup.select('#result-header .result-count')[0].text 
    print txt.split()[-1] 

make_soup(base_url) 

soup.selectは、引数としてcssセレクタを受け入れます。この#result-header .result-countセレクタは、result-headerをidとする要素の内部にあるresult-countクラスの要素を見つける。

+0

ありがとうAvinash! – Sunshine

0
from bs4 import BeautifulSoup 
import requests, re 

base_url = "http://www.autotrader.co.nz/used-cars-for-sale" 
a = BeautifulSoup(requests.get(base_url).content).select('div#result-header p.result-count')[0].text 
num = re.search('([\w,]+)$',a) 
print int(num.groups(1)[0].replace(',','')) 

出力:

30378 

は、文の末尾にあるにも他の番号を取得します。


スクリプトは、今日の日付を追加するファイルの既存のExcelに新しい行を追加は、既存の抽出数は、Excelファイル:

を!!!重要!!!:しないでくださいこのコードをメインファイルで直接実行してください。代わりに、まずそのコピーを作成し、そのファイルを実行します。それが正常に動作する場合は、メインファイルで実行することができます。あなたのデータを失う場合は、私は責任を負いませんよ:)

import openpyxl 
import datetime 

wb = openpyxl.load_workbook('/home/yusuf/Desktop/data.xlsx') 
sheet = wb.get_sheet_by_name('Sheet1') 

a = sheet.get_highest_row() 
sheet.cell(row=a,column=0).value=datetime.date.today() 
sheet.cell(row=a,column=1).value=30378 # use a variable here from the above (previous) code. 

wb.save('/home/yusuf/Desktop/data.xlsx') 
+0

ありがとうMohammad! – Sunshine

+0

@Sunshineあなたの問題が解決された場合、最良の答えを受け入れることを検討してください。 – MYGz

+0

ありがとうもう一度Mohammad :) – Sunshine

0
from bs4 import BeautifulSoup 
from urllib.request import urlopen 

base_url = "http://www.autotrader.co.nz/used-cars-for-sale" 
html = urlopen(base_url).read() 
soup = BeautifulSoup(html, 'lxml') 

result_count = soup.find(class_="result-count").text.split('of ')[-1] 

print(result_count) 

アウト:回答を

30,376 
+0

ありがとうHong Jie! – Sunshine

関連する問題