美文网首页
爬虫一些方法

爬虫一些方法

作者: 老夫愿闻其翔 | 来源:发表于2019-01-01 19:16 被阅读0次

我们先来说一下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)

相关文章

  • 爬虫一些方法

    我们先来说一下selenium语法 selenium这个语法呢就是模拟用户点击可以有效率的防止反爬下面我们来介绍一...

  • 学习Python的爬虫技巧的资料总结

    一些常用的爬虫技巧归纳与以下几点: 1、基本抓取网页 get方法 post方法 2、使用代理IP 在开发爬虫过程中...

  • scrapy框架-反爬虫与绕过方法+setting动态配置

    反爬虫与绕过方法 反爬虫的技术越来越丰富,种类也越来越多,以下归纳爬虫与反爬虫的应对措施和绕过方法。 甲.对网站感...

  • scrapy的暂停和重启

    方法一 方法二 然后正常启动爬虫

  • Python字符串用法讲解

    本文主要介绍Python字符串的一些常用方法,方法很多,本文会针对爬虫常用的方法进行介绍 主要从以下几个方面介绍字...

  • Scrapy 初探

    读者最好对 Python 和爬虫有一些了解,所以关于 Scrapy 一些信息比如如何安装的方法等我就不介绍了。 ...

  • 使用python爬虫抓站的一些技巧总结:进阶篇!

    以前写过一篇使用python爬虫抓站的一些技巧总结,总结了诸多爬虫使用的方法;那篇东东现在看来还是挺有用的,但是当...

  • 2021最新爬虫教程

    爬虫框架就是一些爬虫项目的半成品,可以将些爬虫常用的功能写好。然后留下一些接口,在不同的爬虫项目当中,调用适合自己...

  • 零基础学习爬虫并实战

    本篇主要从爬虫是什么、爬虫的一般流程、爬虫各个流程的实现方法、爬虫实例四个方面分享零基础了解爬虫,并进行简单的实战...

  • python-selenium3.0失败解决方法

    这几天需要爬虫获取一些数据,安装好了Python和pip,然后安装selenium 1 安装方法: 1.1在线安装...

网友评论

      本文标题:爬虫一些方法

      本文链接:https://www.haomeiwen.com/subject/nqfolqtx.html