生生生-爬虫02-创新互联-成都快上网建站

生生生-爬虫02-创新互联

1. xpath

xpath是在XML文档中搜素内容的一种语言。html是xml的一个子集。使用xpath需要安装lxml模块。

创新互联建站服务项目包括舒城网站建设、舒城网站制作、舒城网页制作以及舒城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,舒城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到舒城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1.1 练习1

from lxml import etree

xml = """1野花贬低想1.23臭豆腐周大强周芷若周杰伦蔡依林
 惹人
        
 再见   胖胖陈胖胖不陈"""

tree = etree.XML(xml) # XML()用来读取xml文件
# res = tree.xpath("/book/name") # /表示层级关系,第一个/代表根节点。
# res = tree.xpath("/book/name/text()") # text()代表拿文本
# res = tree.xpath("/book/author//nick/text()") # //表示后代
# res = tree.xpath("/book/author/*/nick/text()") # *表示任意的节点,通配符。只提取想要的部分
res = tree.xpath("/book//nick/text()") #拿book下所有的nick中的内容
print(res)

1.2 练习2 

(1)b.html文件

Title
  • 百度
  • 谷歌
  • 搜狗
  1. 飞机
  2. 大炮
  3. 火车
大冒险 大米

(2)使用

from lxml import etree

tree = etree.parse("b.html") # parse()用来读取文件

# 1.取a标签下的所有内容
res1 = tree.xpath("/html/body/ul/li/a/text()")


# 2.取a标签下的第一个,xpath顺序从1开始数
res2 = tree.xpath("/html/body/ul/li[1]/a/text()")


# 3.取a标签下href值为“dapao”的内容。[@XX=XX]代表属性的筛选
res3 = tree.xpath("/html/body/ol/li/a[@href='dapao']/text()")


# 4.遍历li标签下的所有内容
ol_li_list = tree.xpath("/html/body/ol/li")
for li in ol_li_list:
    # 从每个li中提取到文字信息
    res4_1 = li.xpath("./a/text()") # 此时的li不是根节点了,而是在li中继续去存在。此时需要利用./
    print(res4_1)
    # 查找a标签里面的href的值。利用@属性
    res4_2 = li.xpath("./a/@href")
    print(res4_2)


# 5.拿到ul/li/a标签下所有的href值
res5 = tree.xpath("/html/body/ul/li/a/@href")
3. 练习:抓取猪八戒网信息

在该网站中,爬取红色框中的内容。代码如下,

#!/usr/bin/python
# -*- coding: UTF-8 -*-

"""
  1.提取页面源代码
  2.提取和解析数据
"""
import io
import sys
from lxml import etree
import requests

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030') # 改变标准输出的默认编码

url = "https://wuhan.zbj.com/search/service/?kw=saas"
resp = requests.get(url)
# resp.encoding = 'gbk'  # 指定字符集
# print(resp.text)

# 提取和解析数据
html = etree.HTML(resp.text) # HTML()用来加载网页源码

#拿到每一个服务商的div
fin_list = []
divs = html.xpath("//*[@id='__layout']/div/div[2]/div/div[4]/div[4]/div[1]/div")
for div in divs:  #获取每一个服务商的信息
    price = div.xpath("./div/div[2]/div[1]/span/text()")
    list = []
    if(len(price) != 0):  #提取到的某条数据可能为空,要进行判断
        price = price[0].strip("¥") # 去掉开头的¥
        list.append(price)

    # name = div.xpath("./div/div[2]/div[2]/a/text()") #此时会出现列表中有两个元素的情况,要将他们进行拼接
    name = "saas".join(div.xpath("./div/div[2]/div[2]/a/text()"))
    if (len(name) != 0):
        list.append(name)

    place = div.xpath("./div/a/div[2]/div/div/text()")
    if (len(place) != 0):
        list.append(place[0])

    #将提取到的所有数据以列表的形式存放
    fin_list.append(list)  
print(fin_list)

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:生生生-爬虫02-创新互联
网站地址:http://kswjz.com/article/dcejdg.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流