爬蟲之?dāng)y程網(wǎng)旅游信息爬取

最近手又有點閑,閑著無聊就爬取了攜程的信息尔艇,這個爬蟲是我隨手寫的絮吵,各位可以看看陌宿。

# -*- encoding=utf-8 -*-
#爬取攜程旅游信息
#2017/8/14

from bs4 import BeautifulSoup

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
import os
import csv
import time

driver = webdriver.Chrome()

#打開網(wǎng)頁
def gethtml(place):
    try:
        driver.get('http://vacations.ctrip.com/')
        welcome = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "body > div.jewel_pop_box > div.jewel_pop > span")))
        welcome.click()
        seaech = driver.find_element_by_css_selector('#searchpanel > div.search_wrap > div.new_search_content > div > input')
        check = driver.find_element_by_css_selector('#searchpanel > div.search_wrap > a.main_search_btn')
        seaech.send_keys(place)
        check.click()
        return driver.page_source
    except TimeoutException:
        gethtml(place)

#換頁
def changepage(page):
    try:
        time.sleep(4)
        js="var q=document.documentElement.scrollTop=10000"
        driver.execute_script(js)
        p =  WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR,'#ipt_page_txt')))
        submit = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR,'#ipt_page_btn')))
        p.clear()
        p.send_keys(page)
        submit.click()
        return driver.page_source
    except:
        return changepage(page)

#解析頁面
def checkpage(html):
    soup = BeautifulSoup(html,'lxml')
    links = soup.find_all('div',class_='main_mod product_box flag_product ')
    for link in links:
        name =link.h2.get_text()
        href = 'http:' + link.h2.a['href']
        price = link.find('span',class_='sr_price').get_text()[:-1]
        try:
            agree =  link.find('p',class_='grade').get_text()[:-1]
        except:
            agree = ''
        try:
            alp = link.find('div',class_='comment')
            people = alp.em.string[:-3]
            about = alp.a.get_text()[:-3]
        except:
            people = ''
            about = ''
        yield {
            '產(chǎn)品':name,
            '鏈接':href,
            '價格':price,
            '評分':agree,
            '人數(shù)':people,
            '點評':about,
        }

    
#創(chuàng)建文件夾
def make(place):
    path = 'D:/數(shù)據(jù)/'
    if not os.path.exists:
        os.makedirs(path)
    with open(path + place +'旅游信息.csv','w') as f:
        writer = csv.writer(f)
        writer.writerow(['產(chǎn)品','鏈接','價格','評分','人數(shù)','點評'])
        f.close()
    def save_to_csv(i):
        with open(path + place +'旅游信息.csv','a') as f:
            writer = csv.writer(f)
            try:
                writer.writerow([ i['產(chǎn)品'],i['鏈接'],i['價格'],i['評分'], i['人數(shù)'],i['點評'] ])
            except:
                pass
            f.close()
    return save_to_csv

#主函數(shù)
def main(place):
    save = make(place)
    html = gethtml(place)
    for i in checkpage(html):
        save(i)
        print(i)
    for i in range(2,101):
        
        html = changepage(i)
        for fil in checkpage(html):
            save(fil)
            print(fil)
    driver.quit() 

#執(zhí)行程序
if __name__ == '__main__':
    place = input('請輸入要查詢的地點:')
    main(place)
u=4098028651,4134268318&fm=202.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锡足,一起剝皮案震驚了整個濱河市波丰,隨后出現(xiàn)的幾起案子壳坪,更是在濱河造成了極大的恐慌,老刑警劉巖掰烟,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爽蝴,死亡現(xiàn)場離奇詭異,居然都是意外死亡纫骑,警方通過查閱死者的電腦和手機蝎亚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來先馆,“玉大人发框,你說我怎么就攤上這事∶呵剑” “怎么了梅惯?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仿野。 經(jīng)常有香客問我铣减,道長,這世上最難降的妖魔是什么脚作? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任葫哗,我火速辦了婚禮,結(jié)果婚禮上球涛,老公的妹妹穿的比我還像新娘劣针。我一直安慰自己,他們只是感情好亿扁,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布捺典。 她就那樣靜靜地躺著,像睡著了一般魏烫。 火紅的嫁衣襯著肌膚如雪辣苏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天哄褒,我揣著相機與錄音稀蟋,去河邊找鬼。 笑死呐赡,一個胖子當(dāng)著我的面吹牛退客,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼萌狂,長吁一口氣:“原來是場噩夢啊……” “哼档玻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茫藏,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤误趴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后务傲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凉当,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年售葡,在試婚紗的時候發(fā)現(xiàn)自己被綠了看杭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡挟伙,死狀恐怖楼雹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尖阔,我是刑警寧澤贮缅,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站诺祸,受9級特大地震影響携悯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜筷笨,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一憔鬼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胃夏,春花似錦轴或、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至答恶,卻和暖如春饺蚊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悬嗓。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工污呼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人包竹。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓燕酷,卻偏偏與公主長得像籍凝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子苗缩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,727評論 25 707
  • 本杰明·富蘭克林說饵蒂,我未曾見過一個早起、勤奮酱讶、謹慎退盯、誠實的人抱怨命運不好;良好的品格浴麻,優(yōu)良的習(xí)慣得问,堅強的意志,是不...
    小王子星球人閱讀 245評論 0 0
  • 細雨霏霏秋風(fēng)淡 澹澹煙波無舟返 暮色輕柳戲晚裝 欲待佳人邀情郎 煙雨迷朦望云天 銀河萬里心相連 尤恐鵲橋水漫長 牛...
    云詩一線閱讀 260評論 1 2
  • 八年級1602班家校合作實況 家校聯(lián)系是對孩子教育非常重要的組成部分, 它可以更真實软免、更全面的了解孩子全天候...
    金奇老師閱讀 539評論 0 3
  • “國際婦女節(jié)”、“三八節(jié)”和“三八婦女節(jié)”焚挠。 從1909年3月8日膏萧,美國芝加哥勞動婦女罷工游行集會以來,...
    遙遠遠閱讀 181評論 4 3