爬虫一些方法

我们先来说一下selenium语法

selenium这个语法呢就是模拟用户点击可以有效率的防止反爬下面我们来介绍一下用法。话不多说上代码。讲解看注释!一个关于获取斗鱼数据的代码!

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

#获取没页面内容
  def get_content(self):
    time.sleep(3) #每次发送完请求等待三秒,等待页面加载完成
    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
      #获取观看人数
      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.发送首页的请求
    #2.获取第一页的信息
    contents = self.get_content()
    #保存内容
    self.save_content(contents)
  #3.循环 点击下一页按钮,知道下一页对应的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.继续获取下一页的内容
      contents = self.get_content()
      #4.1.保存内容
      self.save_content(contents)

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

下面我们来说一下xpath常用语法以及介绍

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选择属性。

下面我们来说一下用法!详细用法看代码注释!一个关于获取起点数据的代码!

#导入所需要的包
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):
    """
    #根据分页的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',
    }
    #发起请求,获取响应结果
    response = requests.get(url=req_url,headers=req_header)

    if response.status_code == 200:

        #提取小说的信息

        #使用etree.HTML可以将html文档源码,转为一个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)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 20170531 这几天重新拾起了爬虫,算起来有将近5个月不碰python爬虫了。 对照着网上的程序和自己以前写的...
    八神苍月阅读 14,164评论 3 44
  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 3,644评论 0 7
  • ···lxml用法源自 lxml python 官方文档,更多内容请直接参阅官方文档,本文对其进行翻译与整理。lx...
    小丰丰_72a2阅读 957评论 0 1
  • 越来越多的人 现在的社会 两极化越来越明显 可以看到脚步匆匆的人儿 也可以看到慢的一塌糊涂的人儿 可最最重要的便...
    敖不长阅读 365评论 0 2
  • 文Ⅰ77若初 最早听到安全感这个词是有朋友说我比较缺乏安全感。当时因为已经在婚姻里,也已经受了些情感的伤,于是不免...
    若初的清明觉知阅读 747评论 25 61