资讯专栏INFORMATION COLUMN

Python xpath,JsonPath,bs4的基本使用方法

89542767 / 535人阅读

  小编写这篇文章的一个主要目的,主要是来给大家去做一个介绍,介绍的内容主要是关于Python的一些知识,其中的内容包含有xpath,JsonPath,bs4等一些知识,主要是去介绍他们的一些基本使用方法,具体的内容,下面就给大家详细解答下。


  1.xpath


  1.1 xpath使用


  google提前安装xpath插件,按ctrl+shift+x出现小黑框


  安装lxml库pip install lxml‐i https://pypi.douban.com/simple


  导入lxml.etreefrom lxml import etree


  etree.parse()解析本地文件html_tree=etree.parse('XX.html')


  etree.HTML()服务器响应文件html_tree=etree.HTML(response.read().decode('utf‐8')


  .html_tree.xpath(xpath路径)


  1.2 xpath基本语法


  1.路径查询


  查找所有子孙节点,不考虑层级关系


  找直接子节点


  2.谓词查询


</>复制代码

  1.   //div[id]
  2.   //div[id="maincontent"]


  3.属性查询

</>复制代码

  1.   //class


  4.模糊查询


</>复制代码

  1.   //div[contains(id,"he")]
  2.   //div[starts‐with(id,"he")]

  5.内容查询

</>复制代码

  1.   //div/h1/text()


  6.逻辑运算


</>复制代码

  1.   //div[id="head"and]
  2.   //title|//price


  1.3示例


  xpath.html


</>复制代码

  1.   &lt;!DOCTYPE html&gt;
  2.   &lt;html&gt;
  3.   &lt;head&gt;
  4.   &lt;meta charset="UTF-8"/&gt;
  5.   &lt;title&gt;Title&lt;/title&gt;
  6.   &lt;/head&gt;
  7.   &lt;body&gt;
  8.   &lt;ul&gt;
  9.   &lt;li id="l1"class="class1"&gt;北京&lt;/li&gt;
  10.   &lt;li id="l2"class="class2"&gt;上海&lt;/li&gt;
  11.   &lt;li id="d1"&gt;广州&lt;/li&gt;
  12.   &lt;li&gt;深圳&lt;/li&gt;
  13.   &lt;/ul&gt;
  14.   &lt;/body&gt;
  15.   &lt;/html&gt;
  16.   from lxml import etree
  17.   #xpath解析
  18.   #本地文件:etree.parse
  19.   #服务器相应的数据response.read().decode('utf-8')etree.HTML()
  20.   tree=etree.parse('xpath.html')
  21.   #查找url下边的li
  22.   li_list=tree.xpath('//body/ul/li')
  23.   print(len(li_list))#4
  24.   #获取标签中的内容
  25.   li_list=tree.xpath('//body/ul/li/text()')
  26.   print(li_list)#['北京','上海','广州','深圳']
  27.   #获取带id属性的li
  28.   li_list=tree.xpath('//ul/li[id]')
  29.   print(len(li_list))#3
  30.   #获取id为l1的标签内容
  31.   li_list=tree.xpath('//ul/li[id="l1"]/text()')
  32.   print(li_list)#['北京']
  33.   #获取id为l1的class属性值
  34.   c1=tree.xpath('//ul/li[id="l1"]/class')
  35.   print(c1)#['class1']
  36.   #获取id中包含l的标签
  37.   li_list=tree.xpath('//ul/li[contains(id,"l")]/text()')
  38.   print(li_list)#['北京','上海']
  39.   #获取id以d开头的标签
  40.   li_list=tree.xpath('//ul/li[starts-with(id,"d")]/text()')
  41.   print(li_list)#['广州']
  42.   #获取id为l2并且class为class2的标签
  43.   li_list=tree.xpath('//ul/li[id="l2"and]/text()')
  44.   print(li_list)#['上海']
  45.   #获取id为l2或id为d1的标签
  46.   li_list=tree.xpath('//ul/li[id="l2"]/text()|//ul/li[id="d1"]/text()')
  47.   print(li_list)#['上海','广州']


  1.4爬取百度搜索按钮的value


</>复制代码

  1.   import urllib.request
  2.   from lxml import etree
  3.   url='http://www.baidu.com'
  4.   headers={
  5.   'User-Agent':'Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/103.0.0.0 Safari/537.36'
  6.   }
  7.   request=urllib.request.Request(url=url,headers=headers)
  8.   response=urllib.request.urlopen(request)
  9.   content=response.read().decode('utf-8')
  10.   tree=etree.HTML(content)
  11.   value=tree.xpath('//input[id="su"]/value')
  12.   print(value)

01.png

  1.5爬取站长素材的图片


</>复制代码

  1.   #需求下载的前十页的图片
  2.   #https://sc.chinaz.com/tupian/qinglvtupian.html 1
  3.   #https://sc.chinaz.com/tupian/qinglvtupian_page.html
  4.   import urllib.request
  5.   from lxml import etree
  6.   def create_request(page):
  7.   if(page==1):
  8.   url='https://sc.chinaz.com/tupian/qinglvtupian.html'
  9.   else:
  10.   url='https://sc.chinaz.com/tupian/qinglvtupian_'+str(page)+'.html'
  11.   headers={
  12.   'User-Agent':'Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/92.0.4515.159 Safari/537.36',
  13.   }
  14.   request=urllib.request.Request(url=url,headers=headers)
  15.   return request
  16.   def get_content(request):
  17.   response=urllib.request.urlopen(request)
  18.   content=response.read().decode('utf-8')
  19.   return content
  20.   def down_load(content):
  21.   #下载图片
  22.   #urllib.request.urlretrieve('图片地址','文件的名字')
  23.   tree=etree.HTML(content)
  24.   name_list=tree.xpath('//div[id="container"]//a/img/alt')
  25.   #一般设计图片的网站都会进行懒加载
  26.   src_list=tree.xpath('//div[id="container"]//a/img/src2')
  27.   print(src_list)
  28.   for i in range(len(name_list)):
  29.   name=name_list&lt;i&gt;
  30.   src=src_list&lt;i&gt;
  31.   url='https:'+src
  32.   urllib.request.urlretrieve(url=url,filename='./loveImg/'+name+'.jpg')
  33.   if __name__=='__main__':
  34.   start_page=int(input('请输入起始页码'))
  35.   end_page=int(input('请输入结束页码'))
  36.   for page in range(start_page,end_page+1):
  37.   #(1)请求对象的定制
  38.   request=create_request(page)
  39.   #(2)获取网页的源码
  40.   content=get_content(request)
  41.   #(3)下载
  42.   down_load(content)


  2.JsonPath


  2.1 pip安装

</>复制代码

  1.   pip install jsonpath


  2.2 jsonpath的使用


</>复制代码

  1.   obj=json.load(open('json文件','r',encoding='utf‐8'))
  2.   ret=jsonpath.jsonpath(obj,'jsonpath语法')

02.png

  JSONPath语法元素和对应XPath元素的对比:


  示例:


</>复制代码

  1.   jsonpath.json
  2.   {"store":{
  3.   "book":[
  4.   {"category":"修真",
  5.   "author":"六道",
  6.   "title":"坏蛋是怎样练成的",
  7.   "price":8.95
  8.   },
  9.   {"category":"修真",
  10.   "author":"天蚕土豆",
  11.   "title":"斗破苍穹",
  12.   "price":12.99
  13.   },
  14.   {"category":"修真",
  15.   "author":"唐家三少",
  16.   "title":"斗罗大陆",
  17.   "isbn":"0-553-21311-3",
  18.   "price":8.99
  19.   },
  20.   {"category":"修真",
  21.   "author":"南派三叔",
  22.   "title":"星辰变",
  23.   "isbn":"0-395-19395-8",
  24.   "price":22.99
  25.   }
  26.   ],
  27.   "bicycle":{
  28.   "author":"老马",
  29.   "color":"黑色",
  30.   "price":19.95
  31.   }
  32.   }
  33.   }
  34.   import json
  35.   import jsonpath
  36.   obj=json.load(open('jsonpath.json','r',encoding='utf-8'))
  37.   #书店所有书的作者
  38.   author_list=jsonpath.jsonpath(obj,'$.store.book[*].author')
  39.   print(author_list)#['六道','天蚕土豆','唐家三少','南派三叔']
  40.   #所有的作者
  41.   author_list=jsonpath.jsonpath(obj,'$..author')
  42.   print(author_list)#['六道','天蚕土豆','唐家三少','南派三叔','老马']
  43.   #store下面的所有的元素
  44.   tag_list=jsonpath.jsonpath(obj,'$.store.*')
  45.   print(
  46.   tag_list)#[[{'category':'修真','author':'六道','title':'坏蛋是怎样练成的','price':8.95},{'category':'修真','author':'天蚕土豆','title':'斗破苍穹','price':12.99},{'category':'修真','author':'唐家三少','title':'斗罗大陆','isbn':'0-553-21311-3','price':8.99},{'category':'修真','author':'南派三叔','title':'星辰变','isbn':'0-395-19395-8','price':22.99}],{'author':'老马','color':'黑色','price':19.95}]
  47.   #store里面所有东西的price
  48.   price_list=jsonpath.jsonpath(obj,'$.store..price')
  49.   print(price_list)#[8.95,12.99,8.99,22.99,19.95]
  50.   #第三个书
  51.   book=jsonpath.jsonpath(obj,'$..book[2]')
  52.   print(book)#[{'category':'修真','author':'唐家三少','title':'斗罗大陆','isbn':'0-553-21311-3','price':8.99}]
  53.   #最后一本书
  54.   book=jsonpath.jsonpath(obj,'$..book[(.length-1)]')
  55.   print(book)#[{'category':'修真','author':'南派三叔','title':'星辰变','isbn':'0-395-19395-8','price':22.99}]
  56.   #前面的两本书
  57.   book_list=jsonpath.jsonpath(obj,'$..book[0,1]')
  58.   #book_list=jsonpath.jsonpath(obj,'$..book[:2]')
  59.   print(
  60.   book_list)#[{'category':'修真','author':'六道','title':'坏蛋是怎样练成的','price':8.95},{'category':'修真','author':'天蚕土豆','title':'斗破苍穹','price':12.99}]
  61.   #条件过滤需要在()的前面添加一个?
  62.   #过滤出所有的包含isbn的书。
  63.   book_list=jsonpath.jsonpath(obj,'$..book[?(.isbn)]')
  64.   print(
  65.   book_list)#[{'category':'修真','author':'唐家三少','title':'斗罗大陆','isbn':'0-553-21311-3','price':8.99},{'category':'修真','author':'南派三叔','title':'星辰变','isbn':'0-395-19395-8','price':22.99}]
  66.   #哪本书超过了10块钱
  67.   book_list=jsonpath.jsonpath(obj,'$..book[?(.price&gt;10)]')
  68.   print(
  69.   book_list)#[{'category':'修真','author':'天蚕土豆','title':'斗破苍穹','price':12.99},{'category':'修真','author':'南派三叔','title':'星辰变','isbn':'0-395-19395-8','price':22.99}]


  3.BeautifulSoup


  3.1基本简介


  1.安装

</>复制代码

  1.   pip install bs4


  2.导入

</>复制代码

  1.   from bs4 import BeautifulSoup


  3.创建对象


  服务器响应的文件生成对象soup=BeautifulSoup(response.read().decode(),'lxml')


  本地文件生成对象soup=BeautifulSoup(open('1.html'),'lxml')


  注意:默认打开文件的编码格式gbk所以需要指定打开编码格式utf-8


  3.2安装以及创建


  1.根据标签名查找节点


</>复制代码

  1.   soup.a【注】只能找到第一个a
  2.   soup.a.name
  3.   soup.a.attrs


</>复制代码

  1.   2.函数
  2.   (1).find(返回一个对象)
  3.   find('a'):只找到第一个a标签
  4.   find('a',title='名字')
  5.   find('a',class_='名字')
  6.   (2).find_all(返回一个列表)
  7.   find_all('a')查找到所有的a
  8.   find_all(['a','span'])返回所有的a和span
  9.   find_all('a',limit=2)只找前两个a
  10.   (3).select(根据选择器得到节点对象)【推荐】
  11.   1.element
  12.   eg:p
  13.   2..class
  14.   eg:.firstname
  15.   3.#id
  16.   eg:#firstname
  17.   4.属性选择器
  18.   [attribute]
  19.   eg:li=soup.select('li[class]')
  20.   [attribute=value]
  21.   eg:li=soup.select('li[class="hengheng1"]')
  22.   5.层级选择器
  23.   element element
  24.   div p
  25.   element&gt;element
  26.   div&gt;p
  27.   element,element
  28.   div,p
  29.   eg:soup=soup.select('a,span')
  30.   3.3节点定位
  31.   1.根据标签名查找节点
  32.   soup.a【注】只能找到第一个a
  33.   soup.a.name
  34.   soup.a.attrs
  35.   2.函数
  36.   (1).find(返回一个对象)
  37.   find('a'):只找到第一个a标签
  38.   find('a',title='名字')
  39.   find('a',class_='名字')
  40.   (2).find_all(返回一个列表)
  41.   find_all('a')查找到所有的a
  42.   find_all(['a','span'])返回所有的a和span
  43.   find_all('a',limit=2)只找前两个a
  44.   (3).select(根据选择器得到节点对象)【推荐】
  45.   1.element
  46.   eg:p
  47.   2..class
  48.   eg:.firstname
  49.   3.#id
  50.   eg:#firstname
  51.   4.属性选择器
  52.   [attribute]
  53.   eg:li=soup.select('li[class]')
  54.   [attribute=value]
  55.   eg:li=soup.select('li[class="hengheng1"]')
  56.   5.层级选择器
  57.   element element
  58.   div p
  59.   element&gt;element
  60.   div&gt;p
  61.   element,element
  62.   div,p
  63.   eg:soup=soup.select('a,span')
  64.   3.5节点信息
  65.   (1).获取节点内容:适用于标签中嵌套标签的结构
  66.   obj.string
  67.   obj.get_text()【推荐】
  68.   (2).节点的属性
  69.   tag.name获取标签名
  70.   eg:tag=find('li)
  71.   print(tag.name)
  72.   tag.attrs将属性值作为一个字典返回
  73.   (3).获取节点属性
  74.   obj.attrs.get('title')【常用】
  75.   obj.get('title')
  76.   obj['title']
  77.   (1).获取节点内容:适用于标签中嵌套标签的结构
  78.   obj.string
  79.   obj.get_text()【推荐】
  80.   (2).节点的属性
  81.   tag.name获取标签名
  82.   eg:tag=find('li)
  83.   print(tag.name)
  84.   tag.attrs将属性值作为一个字典返回
  85.   (3).获取节点属性
  86.   obj.attrs.get('title')【常用】
  87.   obj.get('title')
  88.   obj['title']
  89.   3.6使用示例
  90.   bs4.html
  91.   &lt;!DOCTYPE html&gt;
  92.   &lt;html&gt;
  93.   &lt;head&gt;
  94.   &lt;meta charset="UTF-8"&gt;
  95.   &lt;title&gt;Title&lt;/title&gt;
  96.   &lt;/head&gt;
  97.   &lt;body&gt;
  98.   &lt;div&gt;
  99.   &lt;ul&gt;
  100.   &lt;li id="l1"&gt;张三&lt;/li&gt;
  101.   &lt;li id="l2"&gt;李四&lt;/li&gt;
  102.   &lt;li&gt;王五&lt;/li&gt;
  103.   &lt;a href=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""class="a1"&gt;google&lt;/a&gt;
  104.   &lt;span&gt;嘿嘿嘿&lt;/span&gt;
  105.   &lt;/ul&gt;
  106.   &lt;/div&gt;
  107.   &lt;a href=""title="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"a2"&gt;百度&lt;/a&gt;
  108.   &lt;div id="d1"&gt;
  109.   &lt;span&gt;
  110.   哈哈哈
  111.   &lt;/span&gt;
  112.   &lt;/div&gt;
  113.   &lt;p id="p1"class="p1"&gt;呵呵呵&lt;/p&gt;
  114.   &lt;/body&gt;
  115.   &lt;/html&gt;
  116.   from bs4 import BeautifulSoup
  117.   #通过解析本地文件来将bs4的基础语法进行讲解
  118.   #默认打开的文件的编码格式是gbk所以在打开文件的时候需要指定编码
  119.   soup=BeautifulSoup(open('bs4.html',encoding='utf-8'),'lxml')
  120.   #根据标签名查找节点
  121.   #找到的是第一个符合条件的数据
  122.   print(soup.a)#&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;
  123.   #获取标签的属性和属性值
  124.   print(soup.a.attrs)#{'href':'','id':'','class':['a1']}
  125.   #bs4的一些函数
  126.   #(1)find
  127.   #返回的是第一个符合条件的数据
  128.   print(soup.find('a'))#&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;
  129.   #根据title的值来找到对应的标签对象
  130.   print(soup.find('a',title="a2"))#&lt;a href=""title="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"a2"&gt;百度&lt;/a&gt;
  131.   #根据class的值来找到对应的标签对象注意的是class需要添加下划线
  132.   print(soup.find('a',class_="a1"))#&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;
  133.   #(2)find_all返回的是一个列表并且返回了所有的a标签
  134.   print(soup.find_all('a'))#[&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;,&lt;a href=""title="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"a2"&gt;百度&lt;/a&gt;]
  135.   #如果想获取的是多个标签的数据那么需要在find_all的参数中添加的是列表的数据
  136.   print(soup.find_all(['a','span']))#[&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;,&lt;span&gt;嘿嘿嘿&lt;/span&gt;,&lt;a href=""title="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"a2"&gt;百&lt;/a&gt;&lt;spa哈&lt;/span&gt;]
  137.   #limit的作用是查找前几个数据
  138.   print(soup.find_all('li',limit=2))#[&lt;li id="l1"&gt;张三&lt;/li&gt;,&lt;li id="l2"&gt;李四&lt;/li&gt;]
  139.   #(3)select(推荐)
  140.   #select方法返回的是一个列表并且会返回多个数据
  141.   print(soup.select('a'))#[&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;,&lt;a href=""title="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"a2"&gt;百度&lt;/a&gt;]
  142.   #可以通过.代表class我们把这种操作叫做类选择器
  143.   print(soup.select('.a1'))#[&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;]
  144.   print(soup.select('#l1'))#[&lt;li id="l1"&gt;张三&lt;/li&gt;]
  145.   #属性选择器---通过属性来寻找对应的标签
  146.   #查找到li标签中有id的标签
  147.   print(soup.select('li[id]'))#[&lt;li id="l1"&gt;张三&lt;/li&gt;,&lt;li id="l2"&gt;李四&lt;/li&gt;]
  148.   #查找到li标签中id为l2的标签
  149.   print(soup.select('li[id="l2"]'))#[&lt;li id="l2"&gt;李四&lt;/li&gt;]
  150.   #层级选择器
  151.   #后代选择器
  152.   #找到的是div下面的li
  153.   print(soup.select('div li'))#[&lt;li id="l1"&gt;张三&lt;/li&gt;,&lt;li id="l2"&gt;李四&lt;/li&gt;,&lt;li&gt;王五&lt;/li&gt;]
  154.   #子代选择器
  155.   #某标签的第一级子标签
  156.   #注意:很多的计算机编程语言中如果不加空格不会输出内容但是在bs4中不会报错会显示内容
  157.   print(soup.select('div&gt;ul&gt;li'))#[&lt;li id="l1"&gt;张三&lt;/li&gt;,&lt;li id="l2"&gt;李四&lt;/li&gt;,&lt;li&gt;王五&lt;/li&gt;]
  158.   #找到a标签和li标签的所有的对象
  159.   print(soup.select(
  160.   'a,li'))#[&lt;li id="l1"&gt;张三&lt;/li&gt;,&lt;li id="l2"&gt;李四&lt;/li&gt;,&lt;li&gt;王五&lt;/li&gt;,&lt;ahref=""id="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow""&gt;google&lt;/a&gt;,&lt;a href=""title="rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"rel="external nofollow"a2"&gt;百度&lt;/a&gt;]
  161.   #节点信息
  162.   #获取节点内容
  163.   obj=soup.select('#d1')[0]
  164.   #如果标签对象中只有内容那么string和get_text()都可以使用
  165.   #如果标签对象中除了内容还有标签那么string就获取不到数据而get_text()是可以获取数据
  166.   #我们一般情况下推荐使用get_text()
  167.   print(obj.string)#None
  168.   print(obj.get_text())#哈哈哈
  169.   #节点的属性
  170.   obj=soup.select('#p1')[0]
  171.   #name是标签的名字
  172.   print(obj.name)#p
  173.   #将属性值左右一个字典返回
  174.   print(obj.attrs)#{'id':'p1','class':['p1']}
  175.   #获取节点的属性
  176.   obj=soup.select('#p1')[0]
  177.   #
  178.   print(obj.attrs.get('class'))#['p1']
  179.   print(obj.get('class'))#['p1']
  180.   print(obj['class'])#['p1']
  181.   3.7解析星巴克产品名称
  182.   import urllib.request
  183.   url='https://www.starbucks.com.cn/menu/'
  184.   response=urllib.request.urlopen(url)
  185.   content=response.read().decode('utf-8')
  186.   from bs4 import BeautifulSoup
  187.   soup=BeautifulSoup(content,'lxml')
  188.   #//ul[class="grid padded-3 product"]//strong/text()
  189.   #一般先用xpath方式通过google插件写好解析的表达式
  190.   name_list=soup.select('ul[class="grid padded-3 product"]strong')
  191.   for name in name_list:
  192.   print(name.get_text())

03.png

  综上所述,这篇文章就给大家介绍到这里了,希望可以为大家带来更多帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128400.html

相关文章

  • Python_爬虫基础

    摘要:并不是所有爬虫都遵守,一般只有大型搜索引擎爬虫才会遵守。的端口号为的端口号为工作原理网络爬虫抓取过程可以理解为模拟浏览器操作的过程。表示服务器成功接收请求并已完成整个处理过程。 爬虫概念 数据获取的方式: 企业生产的用户数据:大型互联网公司有海量用户,所以他们积累数据有天然优势。有数据意识的中小型企业,也开始积累的数据。 数据管理咨询公司 政府/机构提供的公开数据 第三方数据平台购买...

    ixlei 评论0 收藏0
  • 爬虫框架WebMagic源码分析之Selector

    摘要:主要用于选择器抽象类,实现类前面说的两个接口,主要用于选择器继承。多个选择的情形,每个选择器各自独立选择,将所有结果合并。抽象类,定义了一些模板方法。这部分源码就不做分析了。这里需要提到的一点是返回的不支持选择,返回的对象支持选择。 1、Selector部分:接口:Selector:定义了根据字符串选择单个元素和选择多个元素的方法。ElementSelector:定义了根据jsoup ...

    dongxiawu 评论0 收藏0
  • Python爬虫笔记1-爬虫背景了解

    摘要:学习爬虫的背景了解。但是搜索引擎蜘蛛的爬行是被输入了一定的规则的,它需要遵从一些命令或文件的内容,如标注为的链接,或者是协议。不同领域不同背景的用户往往具有不同的检索目的和需求,搜索引擎无法提供针对具体某个用户的搜索结果。 学习python爬虫的背景了解。 大数据时代数据获取方式 如今,人类社会已经进入了大数据时代,数据已经成为必不可少的部分,可见数据的获取非常重要,而数据的获取的方式...

    oujie 评论0 收藏0
  • 关于爬虫解析数据4种方式

    摘要:大奉打更人卖报小郎君这个人仙太过正经言归正传从红月开始黑山老鬼稳住别浪跳舞二解析数据是一个可以从或文件中提取数据的库。 目录 一、XPath解析数据 1、XPath解析数据 2、XML的树形结构 3、使用XPath选取节点 4、课堂案例 - 爬取起点小说网 二、BeautifulSoup解析...

    newtrek 评论0 收藏0

发表评论

0条评论

89542767

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<