爬蟲一些方法

我們先來說一下selenium語法

selenium這個語法呢就是模擬用戶點擊可以有效率的防止反爬下面我們來介紹一下用法鸳址。話不多說上代碼娱两。講解看注釋!一個關于獲取斗魚數(shù)據(jù)的代碼纺荧!

from selenium import webdriver
import json
import time
class Douyu:
# 1.發(fā)送首頁的請求
  def __init__(self):
    self.driver = webdriver.PhantomJS()
    self.driver.get("https://www.douyu.com/directory/all") #請求首頁

#獲取沒頁面內(nèi)容
  def get_content(self):
    time.sleep(3) #每次發(fā)送完請求等待三秒簇秒,等待頁面加載完成
    li_list = self.driver.find_elements_by_xpath('//ul[@id="live-list-contentbox"]/li')
    contents = []
    #遍歷房間列表
    for i in li_list: 
      item = {}
      #獲取房間圖片
      item["img"] = i.find_element_by_xpath("./a//img").get_attribute("src") 
       #獲取房間名字
      item["title"] = i.find_element_by_xpath("./a").get_attribute("title")
       #獲取房間分類
      item["category"] =i.find_element_by_xpath("./a/div[@class='mes']/div/span").text 
       #獲取主播名字
      item["name"] = i.find_element_by_xpath("./a/div[@class='mes']/p/span[1]").text
      #獲取觀看人數(shù)
      item["watch_num"]=i.find_element_by_xpath("./a/div[@class='mes']/p/span[2]").text 
      print(item)
      contents.append(item)
      return contents
#保存本地
  def save_content(self,contents):
    f = open("douyu.txt","a")
    for content in contents:
      json.dump(content,f,ensure_ascii=False,indent=2)
      f.write("\n")
      f.close()

  def run(self):
    #1.發(fā)送首頁的請求
    #2.獲取第一頁的信息
    contents = self.get_content()
    #保存內(nèi)容
    self.save_content(contents)
  #3.循環(huán) 點擊下一頁按鈕,知道下一頁對應的class名字不再是"shark-pager-next"
  #判斷有沒有下一頁
  while self.driver.find_element_by_class_name("shark-pager-next"):
      #點擊下一頁的按鈕
      self.driver.find_element_by_class_name("shark-pager-next").click() #
      # 4.繼續(xù)獲取下一頁的內(nèi)容
      contents = self.get_content()
      #4.1.保存內(nèi)容
      self.save_content(contents)

if __name__ == "__main__":
douyu = Douyu()
douyu.run()

下面我們來說一下xpath常用語法以及介紹

表達式 描述
nodename 選取此節(jié)點的所有子節(jié)點擒悬。
/ 從根節(jié)點選取模她。
// 從匹配選擇的當前節(jié)點選擇文檔中的節(jié)點,而不考慮它們的位置懂牧。
. 選取當前節(jié)點侈净。
.. 選取當前節(jié)點的父節(jié)點。
@ 選擇屬性僧凤。

下面我們來說一下用法畜侦!詳細用法看代碼注釋!一個關于獲取起點數(shù)據(jù)的代碼躯保!

#導入所需要的包
import os
import urllib
import urllib2
from lxml import etree
def qidianSpider(start_url):

    get_noval_list_by_url(start_url)


def get_noval_list_by_url(req_url):
    """
    #根據(jù)分頁的url,獲取分頁的頁面源碼旋膳,提取小說的信息
    #req_url:表示每一個分頁的url
    """
    #構建一個請求頭
    req_header = {
        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
    }
    #發(fā)起請求,獲取響應結(jié)果
    response = requests.get(url=req_url,headers=req_header)

    if response.status_code == 200:

        #提取小說的信息

        #使用etree.HTML可以將html文檔源碼,轉(zhuǎn)為一個element對象,
        #然后才能使用xpath語法
        html_element = etree.HTML(response.text)

     
        #提取小說列表
        noval_lis = html_element.xpath('//ul[@class="all-img-list cf"]/li')
        print(len(noval_lis))
        print(noval_lis)

        for noval_li in noval_lis:
            #封面圖片
            coverImage = noval_li.xpath('./div[@class="book-img-box"]/a/img/@src')[0]
            #標題
            title = noval_li.xpath('./div[@class="book-mid-info"]/h4/a/text()')[0]
            #作者
            author = noval_li.xpath('.//a[@class="name"]/text()')[0]

            print(coverImage, title, author)
if __name__ == '__main__':

    start_url = 'https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page=1'

    qidianSpider(start_url)
?著作權歸作者所有,轉(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é)果婚禮上蝙叛,老公的妹妹穿的比我還像新娘。我一直安慰自己公给,他們只是感情好借帘,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淌铐,像睡著了一般肺然。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腿准,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天际起,我揣著相機與錄音,去河邊找鬼吐葱。 笑死街望,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的弟跑。 我是一名探鬼主播灾前,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼孟辑!你這毒婦竟也來了哎甲?” 一聲冷哼從身側(cè)響起蔫敲,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烧给,沒想到半個月后燕偶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡础嫡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年指么,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(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
  • 正文 我出身青樓,卻偏偏與公主長得像橡娄,于是被迫代替她去往敵國和親诗箍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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

  • 20170531 這幾天重新拾起了爬蟲挽唉,算起來有將近5個月不碰python爬蟲了滤祖。 對照著網(wǎng)上的程序和自己以前寫的...
    八神蒼月閱讀 14,148評論 3 44
  • ??DOM(文檔對象模型)是針對 HTML 和 XML 文檔的一個 API(應用程序編程接口)匠童。 ??DOM 描繪...
    霜天曉閱讀 3,619評論 0 7
  • ···lxml用法源自 lxml python 官方文檔埂材,更多內(nèi)容請直接參閱官方文檔,本文對其進行翻譯與整理汤求。lx...
    小豐豐_72a2閱讀 943評論 0 1
  • 越來越多的人 現(xiàn)在的社會 兩極化越來越明顯 可以看到腳步匆匆的人兒 也可以看到慢的一塌糊涂的人兒 可最最重要的便...
    敖不長閱讀 359評論 0 2
  • 文Ⅰ77若初 最早聽到安全感這個詞是有朋友說我比較缺乏安全感。當時因為已經(jīng)在婚姻里挤牛,也已經(jīng)受了些情感的傷莹痢,于是不免...
    若初的清明覺知閱讀 742評論 25 61