Python爬虫類は実戦的にseleniumで登って某観光サイトを取ります。
一、selenium実戦
ここではあまり使わないseleniumの文法しか使えません。他の使い方を補いません。実戦を目的としています。
二、芸竜網を開く
ここを直接クリックしてもいいです。龍ネット。
ここはホームページです
三、正確な目標
私達の目標は鶴壁市です。だからまず検索枠をクリックして北京を削除して鶴壁市に変えます。どうやってseleniumで実現しますか?
pycharmを開けて、龍ネットというpyファイルを新規作成します。先導カバン:
1.F 12、小さい矢印、検索ボックスをクリックします。
2.クリックしたら、要素の中の位置、右クリックして、コピーして、xpathをコピーします。
3.pycharmに入り、前に作成したpyファイルに下記のコードを追加します。
この時、私達は絶望的に発見しました。これらの操作はすべて無駄です。彼女はまだ北京です
だから私たちはこうするしかないです。
直接クリックして検索して、このページに入ったら鶴壁を入力します。このいまいましい儀式感のために!!)こうすれば、またそうすればいいです。
8.ウェブページを分析し、詳細ページのurlを見つける
私たちはこのようにしてもいいです。
私たちはこの詳細ページはそれぞれのxpathが違っています。どのようにしてすべての詳細ページを「配慮」することができますか?私たちのrequestsを出してください。そして、これはURLだけです。どうすればいいですか?つづり合わせます
9.応答を見ることによって、応答と元素が同じであることが分かります。何を説明しますか?私たちはxpathを通じて私たちの元素を抽出できます。直接に私たちのxpath選手を出してください。
詳細ページをクリックしてURLを確認したら、このようになります。
研究し発見しますissugtrace=2削除しても実行できますが、xpathで取ったのは後の/31712004/ですので、
パッケージ関数を同時に取得し、循環的によじ登ります。
そして、なくて…
四、成功
データを取得しました
おわりに
いろいろな文法の機能を実戦で理解してほしいです。丸暗記ではなく、いろいろな文法を暗記してください。そうすると、あなたは忘れやすいです。実は多くの勉強はこのような方式で勉強できます。
ここで、Python爬虫類については、実際にseleniumで登山して、ある観光サイトの記事を紹介します。Python seleniumはウェブサイトの内容について、以前の文章を検索してください。または、次の関連記事を見てください。これからもよろしくお願いします。
ここではあまり使わないseleniumの文法しか使えません。他の使い方を補いません。実戦を目的としています。
二、芸竜網を開く
ここを直接クリックしてもいいです。龍ネット。
ここはホームページです
三、正確な目標
私達の目標は鶴壁市です。だからまず検索枠をクリックして北京を削除して鶴壁市に変えます。どうやってseleniumで実現しますか?
pycharmを開けて、龍ネットというpyファイルを新規作成します。先導カバン:
from selenium import webdriver
import time #
driver = webdriver.Chrome() # selenium
driver.get("http://www.elong.com/")
time.sleep(1) # , 1s,
driver.maximize_window() #
どのように検索ボックスを見つけますか?いろいろな方法があります。xpath、css、JavaScript、jQuery、xpathは簡単ですから、私達はxpathだけを使います。このサイトもxpathを使うことができます。具体的な手順は:1.F 12、小さい矢印、検索ボックスをクリックします。
2.クリックしたら、要素の中の位置、右クリックして、コピーして、xpathをコピーします。
3.pycharmに入り、前に作成したpyファイルに下記のコードを追加します。
driver.find_element_by_xpath('//*[@id="domesticDiv"]/dl[1]/dd/input').clear()
#
4.検索ボックスに「鶴壁市」を追加する
driver.find_element_by_xpath('//*[@id="domesticDiv"]/dl[1]/dd/input').send_keys(' ')
5.検索をクリックして、次のページに進みます。
time.sleep(1)
driver.find_element_by_xpath('//*[@id="hotel_sub_tabs"]/span[1]/b').click() #
time.sleep(1) #
driver.find_element_by_xpath('//*[@id="domesticDiv"]/div/span[1]').click() #
6.次のページこの時、私達は絶望的に発見しました。これらの操作はすべて無駄です。彼女はまだ北京です
だから私たちはこうするしかないです。
直接クリックして検索して、このページに入ったら鶴壁を入力します。このいまいましい儀式感のために!!)こうすれば、またそうすればいいです。
from selenium import webdriver
import time #
driver = webdriver.Chrome() # selenium
driver.get("http://www.elong.com/")
time.sleep(1) # , 1s,
driver.maximize_window() #
driver.find_element_by_xpath('//*[@id="domesticDiv"]/div/span[1]').click() #
driver.find_element_by_xpath('//*[@id="m_searchBox"]/div[1]/label/input').clear() #
driver.find_element_by_xpath('//*[@id="m_searchBox"]/div[1]/label/input').send_keys(' ') #
time.sleep(1)
driver.find_element_by_xpath('//*[@id="sugContent"]/ul/li[1]/div/div[1]/div[1]/span/b').click() #
time.sleep(1)
# , xpath
そして鶴壁市の位置付けに成功しました。8.ウェブページを分析し、詳細ページのurlを見つける
私たちはこのようにしてもいいです。
私たちはこの詳細ページはそれぞれのxpathが違っています。どのようにしてすべての詳細ページを「配慮」することができますか?私たちのrequestsを出してください。そして、これはURLだけです。どうすればいいですか?つづり合わせます
9.応答を見ることによって、応答と元素が同じであることが分かります。何を説明しますか?私たちはxpathを通じて私たちの元素を抽出できます。直接に私たちのxpath選手を出してください。
from lxml import etree
import re
html_data = driver.page_source # html_data
ht = ht_ht.xpath('//div[@class="to_detail"]/a/@data-link') # url
10.連結文字列は新しいURLを形成する。詳細ページをクリックしてURLを確認したら、このようになります。
研究し発見しますissugtrace=2削除しても実行できますが、xpathで取ったのは後の/31712004/ですので、
for ur in ht:
new_ul = 'http://www.elong.com' + ur
11.詳細ページのURLを取ったら、要点を入力してからウェブページを分析し、データを抽出し、その後データを保存し、xpathを探している私は先に言わなくてもいいです。
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'
}
for ur in ht:
new_ul = 'http://www.elong.com' + ur
xiangqing_ht = requests.get(new_ul, headers=head).content.decode()
# requests
time.sleep(1) # 1s
ht_data = etree.HTML(xiangqing_ht) # xpath HTML
tingche = ht_data.xpath('//*[@id="hotelContent"]/div/dl[4]/dd/text()') #
if tingche == []:
tingche = ' '
name = ht_data.xpath('/html/body/div[3]/div/div[1]/div[1]/div/h1/text()')[0] #
phine_num = ht_data.xpath('//*[@id="hotelContent"]/div/dl[1]/dd/span/text()') #
photo_li = ht_data.xpath('/html/body/div[3]/div/div[2]/div[1]/div[2]/ul[1]/li/img/@src') #
weizhi = ht_data.xpath('//*[@id="map"]/div[1]/div[2]/div[1]/div/div[9]/div[2]/div/p[2]/text()') #
miaoshu = ht_data.xpath('//*[@id="hotelContent"]/div/dl[1]/dd/ul/li[2]/div/p/span[1]/text()')
そして私たちはデータを手に入れました。次に、これらのデータはどうやって保存しますか?辞書を使ってjsonに保存できます。私は続けて上に書いた。
dic = {} # json
ic[f"{name}"] = {}
dic[f"{name}"][f"{name} "] = tingche
dic[f"{name}"][f"{name} "] = phine_num
dic[f"{name}"][f"{name} "] = weizhi
dic[f"{name}"][f"{name} "] = miaoshu
path = f" //{name}"
if not os.path.exists(path):
os.mkdir(path)
#
for num, photo in zip(range(len(photo_li)), photo_li):
if num > 4:
break
else:
with open(f' //{name}//{name, num + 1}.jpg', 'wb') as f:
f.write(requests.get(photo).content) #
with open(f" //{name}// .json", 'w') as f:
f.write(str(dic)) # json
dic = {} # ,
12.データを入手した後、まだ終わっていません。次のページに登ります。まずホームページを滑って一番下の部分に滑ります。
for i in range(4): # 0 1
time.sleep(0.5)
j = (i + 1) * 1000 # 1000 2000
js_ = f'document.documentElement.scrollTop={j}'
driver.execute_script(js_)
time.sleep(5)
13.ホームページに戻り、次のページのxpathを見つけたら、クリックしてください。
driver.find_element_by_xpath('//*[@id="pageContainer"]/a[9]').click()
それから、次のページに入りました。コードがなくなりました。どうすればいいですか?コードがずっと運行されていますので、多くのページのデータが降りてきますか?二つの方法がありますパッケージ関数を同時に取得し、循環的によじ登ります。
そして、なくて…
四、成功
データを取得しました
おわりに
いろいろな文法の機能を実戦で理解してほしいです。丸暗記ではなく、いろいろな文法を暗記してください。そうすると、あなたは忘れやすいです。実は多くの勉強はこのような方式で勉強できます。
ここで、Python爬虫類については、実際にseleniumで登山して、ある観光サイトの記事を紹介します。Python seleniumはウェブサイトの内容について、以前の文章を検索してください。または、次の関連記事を見てください。これからもよろしくお願いします。