python 爬虫学习

Python 爬虫第一周内容 
一、回顾div+css 
  ①div:区域 
   p:文字内容 

   li:列表 

   ul:无序列表

   img:图 
   h1-h6 :不同字号标题 
   a herf= “”:链接 

   hr: !–使用hr标签实现水平分割线,需要注意的是这个标签比较特殊,在html中只有开始标签hr,没有结束标签/hr 

 border-radius 属性允许您向元素添加圆角。

  border 设置边框属性

  padding 设置内边距属性 

  ②header 信息传递给浏览器,对我们不可见 
     content 主题内容 
     footer 页脚 &copy 

  ③一层层嵌套的方式

二、解析网页中的元素

 ☆解析本地网页

第一步:用beautifulsoup 解析网页

 soup = BeautifulSoup(html,‘lxml’)

    用于解析的有五种:html.parser;    lxml HTML;    lxml XML;  html5lib;   lxml(解析速度快)

    找到要查找的元素位置,右键  copy selector 谁 在哪 第几个 长什么样

                                                  copy xpath  谁 在哪 第几个

 第二步:描述要爬取的元素位置

   titles=Soup.select('selctor 里 的东西')

 第三步:筛选所需信息

 放在一个字典里,并且输出

第四步:选取高分评价信息

info = []
info.append(data)
for i in info:
    if float(i['rate'])>3:
        print(i['title'],i['cate'])

所有代码:

from bs4 import BeautifulSoup
info = []
with open('new_index.html','r') as wb_data:
    Soup = BeautifulSoup(wb_data,'lxml')
    images = Soup.select('body > div.main-content > ul > li > img')
    titles = Soup.select('body > div.main-content > ul > li > div.article-info > h3 > a')
    descs = Soup.select('body > div.main-content > ul > li > div.article-info > p.description')
    rates = Soup.select('body > div.main-content > ul > li > div.rate > span')
    cates = Soup.select('body > div.main-content > ul > li > div.article-info > p.meta-info')

    #print(images,titles,descs,rates,cates,sep='\n--------------------\n')

#   for title in titles:
#      print(title.get_text())
#创建一个结构存储信息
for title,image,desc,rate,cate in zip(titles,images,descs,rates,cates):
    data = {
        'title':title.get_text(),
        'rate':rate.get_text(),
        'desc':desc.get_text(),
        #'cate':cate.get_text(),
        'cate':list(cate.stripped_strings),  #处理多个文本的高级get_text()
        'image':image.get('src')
    }
    info.append(data)
    #print(data)
#找出所有分数大于3的文章


for i in info:
    if float(i['rate'])>3:
        print(i['title'],i['cate'])

扩展学习:

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment .

  find_all()

find_all( name , attrs , recursive , text , **kwargs )

唯一的区别是 find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果.

find_all() 方法没有找到目标是返回空列表, find() 方法找不到目标时,返回 None .



☆解析外网网页

1.不同方式定位同样元素

2.反爬取js,用手机端数据

3.如何爬取多个页面  format

4.智能header


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值