爬虫之数据解析

Python网络爬虫基础:使用BeautifulSoup解析网页数据 大家好!在日常工作和学习中,我们经常需要从网页上获取数据。无论是为了数据分析、学术研究,还是个人兴趣,网络爬虫都是一个非常实用的工具。最近,我在一个项目中使用了Python的BeautifulSoup库来解析网页数据,发现这个工具非常强大且易用。于是,我决定将我的经验分享给大家,希望能帮助更多的小伙伴掌握网络爬虫的基础知识。今天,我们将一起学习如何使用BeautifulSoup解析网页数据,从零开始打造一个简单的网络爬虫。让我们一起动手,体验Python网络爬虫的魅力吧! 阅读详情
  • 肯德基
#爬取单页的数据
import requests
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
data = {
    "cname": "",
    "pid": "",
    "keyword": "天津",
    "pageIndex": "1",
    "pageSize": "10"
}
#post请求携带请求参数使用data这个参数
response = requests.post(url=url,headers=headers,data=data)

data = response.json()
for dic in data['Table1']:
    city = dic['cityName']
    address = dic['addressDetail']
    print(city,address)
  • 下厨房:
import requests

#请求头
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
title = input('请输入菜名:')
params = {
    'keyword':title,
    'cat':'1001'
}
#1.指定url
url = 'https://www.xiachufang.com/search/'

#2.发起请求
response = requests.get(url=url,headers=headers,params=params)
#处理乱码
response.encoding = 'utf-8' #gbk
# 搜索:charset

#3.获取响应数据
page_text = response.text

#4.持久化存储
fileName = title + '.html'
with open(fileName,'w') as fp:
    fp.write(page_text)

数据解析

何为数据解析
  • 概念:可以将爬取到的数据中的指定想要的数据进行单独提取。

  • 作用:可以实现聚焦爬虫。

  • 数据解析通用原理:

    • 在一张页面源码中,想要爬取的数据是存在于相关的html的标签中。
    • 可以将指定的标签进行定位,然后提取该标签中或者标签属性中存储的数据即可。
  • 聚焦爬虫编码流程:

    • 指定url
    • 发起请求
    • 获取响应数据
    • 数据解析
    • 持久化存储
  • python中可以实现数据解析的技术:

    • xpath(重要、常用和便捷)
    • Bs4(自行了解学习)
    • re正则
    • pyquery(自行了解学习)
    • json
数据解析的主流策略
xpath(重点)

环境安装:pip install lxml

xpath解析的编码流程:

  • 1.创建一个etree类型的对象,然后把即将被解析的页面源码数据加载到该对象中。
  • 2.调用etree对象中的xpath函数,让其结合着不同形式的xpath表达式进行标签定位和数据提取。

xpath表达式基础操作:

  • 搭建一个实验环境:新建一个test.html文件,然后文件中写入下面内容:
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title>测试bs4</title>
</head>
<body>
	<div>
		<p>百里守约</p>
	</div>
	<div class="song">
		<p>李清照</p>
		<p>王安石</p>
		<p>苏轼</p>
		<p>柳宗元</p>
		<a href="http://www.song.com/" title="赵匡胤" target="_self">
			<span>this is span</span>
		宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
		<a href="" class="du">总为浮云能蔽日,长安不见使人愁</a>
		<img src="http://www.baidu.com/meinv.jpg" alt="" />
	</div>
	<div class="tang">
		<ul>
			<li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
			<li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
			<li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
			<li><a href="http://www.sina.com" class="du">杜甫</a></li>
			<li><a href="http://www.dudu.com" class="du">杜牧</a></li>
			<li><b>杜小月</b></li>
			<li><i>度蜜月</i></li>
			<li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
		</ul>
	</div>
</body>
</html>
  • 学习不同形式的xpath表达式(重点)
from lxml import etree  
# 提取本地数据
# 1.创建一个etree类型的工具/对象,把被解析的页面源码数据加载到该对象中
tree = etree.parse('./05-数据解析之本地数据解析.html')  # parse是解析本地的html文件里的内容;HTML是解析爬虫爬到的页面源码数据。parse加载的是一个的文件,可以将文件里的数据放到解析对象当中。而HTML可以将字符串形式的页面源码数据放到解析对象当中。所以在爬虫里面用的是HTML。./表示在同一目录下
# 2.调用etree对象的xpath函数,结合不同xpath表达式进行标签定位和数据提取
# 标签定位的xpath表达式:
# 定位meta标签
# ret = tree.xpath('/html/head/meta')[0]
# ret = tree.xpath('//meta')[0]  # 从相对位置定位meta标签。<Element meta at 0x1177e613d80>
# 定位所有的div标签
# ret = tree.xpath('//div')
# 索引定位:想要定位到第一个div标签(下标是从1开始)
# ret = tree.xpath('//div[1]')
# 属性定位:定位到class属性值为song的div标签.//tagName[@attrName="attrValue"]。tagName为标签名。attrName为属性名。attrValue为字符串形式的属性值。
# ret = tree.xpath('//div[@class="song"]')
# ret = tree.xpath('//a[@class="du"]')[0]
# 层级标签:定位所有li标签下的a标签
# ret = tree.xpath('//div[@class="tang"]/ul/li/a')
# ret = tree.xpath('//div[@class="tang"]//li/a')  # 将div下边的li标签(可以是div的直系子标签,也可以不是直系子标签)全部取出,//指多个层级。
# print(ret)

# 数据提取:
    # 提取标签内的文本内容
# ret = tree.xpath('//a[@id="feng"]/text()')[0]  # 提取a标签中的文本内容
# ret = tree.xpath('//div[@class="song"]//text()')  # /text()提取标签直系的文本内容;//text()提取标签下所有的文本内容。
# print(ret)
    # 提取标签的属性值内容:语法://tagName/@attrName。tagName定位到的标签,attrName属性名
# ret = tree.xpath('//img/@src')[0]
# print(ret)

# 可以做标签定位,可以提取直系和非直系内容,可以提取标签的属性值内容。xpath就学会了。

案例应用:碧血剑文本爬取

  • url:https://bixuejian.5000yan.com/
  • 需求:将每一个章节的标题和内容进行爬取然后存储到文件中
import requests
from lxml import etree

# 1.指定url
url = 'https://bixuejian.5000yan.com/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
}

# 2.发起请求(携带请求参数)
response = requests.get(url=url, headers=headers)
# 处理乱码
response.encoding = 'utf-8'  # 或gbk,试试,一般不需要,出现乱码时在此加上这行代码。
# 搜索:charset

# 3.获取响应数据
page_text = response.text

# 数据解析:解析章节的标题&详情页的url
# 创建一个etree类型的工具/对象,把被解析的页面源码数据加载到该对象中
tree = etree.HTML(page_text)  # parse是解析本地的html文件里的内容;HTML是解析爬虫爬到的页面源码数据。parse加载的是一个的文件,可以将文件里的数据放到解析对象当中。而HTML可以将字符串形式的页面源码数据放到解析对象当中。所以在爬虫里面用的是HTML。

# li_list列表中存储的是xpath表达式定位到的每一个li标签
# 调用etree对象的xpath函数,结合不同xpath表达式进行标签定位和数据提取
li_list = tree.xpath('/html/body/div[2]/div[1]/main/ul/li')  # xpath地址可以复制出来的:定位到Elements选项卡中->点一下左上角的小箭头(Elements同一行)(Ctrl+Shift+C)->鼠标移到对应页面目标并点击一下->鼠标移到Elements下的框中标出阴影的地方单击右键(这里只是定位到一个目标标签,要定位相同一组的目标标签,要定位在此标签的上一级li标签或上上一级标签ul标签,此处定位在此标签的上上一级ul标签,)->复制->复制xpath->在pycharm中粘贴路径—>手动输入此标签的上一级标签li标签。

# fp = open('xiaoshuo.txt', 'w', encoding='utf-8')
with open('../pydirectory/xiaoshuo.txt', 'w', encoding='utf-8') as fp:
    for li in li_list:
        # 局部解析:只可以解析li标签内部的局部标签
        # 调用etree对象的xpath函数,结合不同xpath表达式进行标签定位和数据提取
        title = li.xpath('./a/text()')[0]  # 这个.表示的是xpath的调用者,也就是li标签。title是a标签里的文本内容,即小说的标题。text()解析的是文本内容。
        detail_url = li.xpath('./a/@href')[0]  # detail_url是标题详情页的url。@href解析的是a标签的href属性值。
        # print(title, detail_url)
        # 对详情页的url发起请求,获取详情页的页面源码数据
        detail_response = requests.get(url=detail_url, headers=headers)
        detail_response.encoding = 'utf-8'
        detail_page_text = detail_response.text  # 详情页的页面内容
        # 对详情页进行数据解析:章节内容
        detail_tree = etree.HTML(detail_page_text)
        content = detail_tree.xpath('/html/body/div[2]/div[1]/main/section/div[1]//text()')  # 返回一个列表。
        # 将content列表转换成一个完整的字符串(小说的内容)
        content = ''.join(content).strip()  # .join(content)将列表转换成字符串,strip()去除空格。

        # 小说的标题有了:title;小说的内容有了:content;下面就是持久化存储:

        # 4.持久化存储
        fp.write(title + ':' + content + '\n')
        print(title, ':章节下载保存成功!')

简历模版下载:https://sc.chinaz.com/jianli/free.html

  • 下载当前页所有的建立模板

    • 简历名称+简历的下载链接
    • 根据简历的下载链接 下载简历文件
    • 根据下载地址下载的压缩包,压缩包是二进制的数据
import requests
from lxml import etree

# 1.指定url

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
}

# 2.发起请求(携带请求参数),获取首页的页面源码数据。
for page in range(1, 6):
    if page == 1:
        url = 'https://sc.chinaz.com/jianli/free.html'
    else:
        url = f'https://sc.chinaz.com/jianli/free_{page}.html'
    print(f'正在爬取{page}页数据.......')

    response = requests.get(url=url, headers=headers)  # 第一次发请求,相当于进入首页界面。
    response.encoding = 'utf-8'  # 处理乱码
    # 搜索:charset

    # 3.获取响应数据
    page_text = response.text
    # 解析首页的页面源码数据:解析简历的名称&详情页的url
    tree = etree.HTML(page_text)  # 创建一个etree类型的工具/对象,把被解析的页面源码数据加载到该对象中
    # 调用etree对象的xpath函数,结合不同xpath表达式进行标签定位和数据提取
    # div_list列表中存储的是xpath表达式定位到的每一个div标签
    div_list = tree.xpath(
        '//*[@id="container"]/div')  # 调用etree对象的xpath函数,结合不同xpath表达式进行标签定位和数据提取,xpath地址可以复制出来的:定位到Elements选项卡中->点一下左上角的小箭头(Elements同一行)(Ctrl+Shift+C)->鼠标移到对应页面目标并点击一下->鼠标移到Elements下的框中标出阴影的地方单击右键(这里只是定位到一个目标标签,要定位相同一组的目标标签,要定位在此标签的上一级div标签或上上一级标签div标签,此处定位在此标签的上上一级div标签,)->复制->复制xpath->在pycharm中粘贴路径—>手动输入此标签的上一级标签div标签。

    for div in div_list:
        # 局部解析:只可以解析div标签内部的局部标签
        title = div.xpath('./p/a/text()')[
            0]  # 这个.表示的是xpath的调用者,也就是div标签。title是p标签里a标签的文本内容,即简历的标题。text()解析的是文本内容。这不能直接复制xpath地址,那样只能固定获取一个简历,要用./表示遍历到的各个节点(即各个div标签)下的p标签里a标签的内容。
        detail_url = div.xpath('./a/@href')[0]  # detail_url是标题详情页的url。@href解析的是a标签的href属性值。
        # print(title, detail_url)
        # 对详情页的url发起请求,获取详情页的页面源码数据
        detail_response = requests.get(url=detail_url, headers=headers)  # 第二次发请求,相当于进入单独模板界面。
        # detail_response.encoding = 'utf-8',看情况,如果无乱码就不写。
        detail_page_text = detail_response.text  # 详情页的页面内容
        # 对详情页进行数据解析:解析出下载地址
        detail_tree = etree.HTML(detail_page_text)  # 解析详情页
        download_url = detail_tree.xpath('//*[@id="down"]/div[2]/ul/li/a/@href')[0]  # 用xpath解析出下载地址
        # 对下载地址发起请求,下载对应的简历压缩包数据
        data = requests.get(download_url, headers=headers).content  # 相当于点击下载链接进行下载。# 第三次发请求,相当于进入下载界面进行下载。.content是把下载的源代码转成二进制数据。因为压缩包(.rar)是二进制数据。
        file_name = '../pydirectory/简历模板/' + title + '.rar'  # '../pydirectory/简历模板/'后面加/表示简历模板是文件夹名,不加/就和title结合成文件名。
        with open(file_name, 'wb') as fp:
            fp.write(data)
            print(title, ":下载保存成功!")

图片数据爬取:

  • http://pic.netbian.com/4kmeinv/

  • 将爬取到的图片存储到指定的文件夹中

  • 抓取详情页大图

  • 爬取多页

  • # 图片数据爬取
    
    # 设置请求参数
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
    }
    
    # 发起请求,获取首页的页面源码数据。
    
    for page in range(1, 3):
        if page == 1:
            url = 'http://pic.netbian.com/4kmeinv/'
        else:
            url = f'http://pic.netbian.com/4kmeinv/index_{page}.html'
        print(f'正在爬取{page}页数据.......')
        # 对首页进行页面源码数据的获取
        response = requests.get(url=url, headers=headers)  # 第一次发请求,相当于进入首页界面。
        # print(response.apparent_encoding)  # 获取网页编码
        response.encoding = 'gbk'  # 处理乱码
        page_text = response.text
    
        # 数据解析:图片名字和图片详情页url
        tree = etree.HTML(page_text)  # 注意这不能加引号,否则后面获取不了数据
        li_list = tree.xpath('//*[@id="main"]/div[3]/ul/li')
        for li in li_list:
            li.xpath('./a/@href')
            title = li.xpath('./a/b/text()')[0]
            detail_url = 'http://pic.netbian.com' + li.xpath('./a/@href')[0]
    
            # 对图片的详情页发起请求,获取详情页的页面源码数据
            detail_response_text = requests.get(url=detail_url, headers=headers).text  #第二次发请求,相当于进入大图界面。这是拿详情页面的源码数据。
            # 数据解析,获取详情页的大图地址
            detail_tree = etree.HTML(detail_response_text)
            img_src = 'http://pic.netbian.com'+detail_tree.xpath('//*[@id="img"]/img/@src')[0]  # 注意是@src不是@href。
            # 对大图地址发请求,下载图片。
            img_data = requests.get(img_src, headers=headers).content  # 第三次发请求,相当于点击下载链接下载图片。content把源码数据转成二进制数据。下载到图片数据。
    
            img_path = '../pydirectory/4k图片/' + title + '.jpg'
            with open(img_path, 'wb') as fp:
                fp.write(img_data)
                print(title, ":下载保存成功!")
    

防盗链

  • 现在很多网站启用了防盗链反爬,防止服务器上的资源被人恶意盗取。什么是防盗链呢?

    • 从HTTP协议说起,在HTTP协议中,有一个表头字段:referer,采用URL的格式来表示从哪一个链接跳转到当前的网页或者文件。referer后面所存储的是url,这个url就可以表示当前请求的数据是从哪一个源头来的,referer采用的是用url的格式来表示从哪一个链接跳转到当前的网页或者文件。通俗理解就是:客户端的请求具体从哪里来,服务器可以通过referer进行溯源。一旦检测来源不是网页所规定的,立即进行阻止或者返回指定的页面。
  • 案例:抓取微博图片,url:http://blog.sina.com.cn/lm/pic/,将页面中某一组系列详情页的图片进行抓取保存,比如三里屯时尚女郎:http://blog.sina.com.cn/s/blog_01ebcb8a0102zi2o.html?tj=1

  • 注意:

    • 1.在解析图片地址的时候,定位src的属性值,返回的内容和开发工具Element中看到的不一样,通过network查看网页源码发现需要解析real_src的值。

    • 2.直接请求real_src请求到的图片不显示,加上Refere请求头即可

      • 哪里找Refere:抓包工具定位到某一张图片数据包,在其requests headers中获取
    • import requests
      from lxml import etree
      headers = {
          'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
          "Referer": "http://blog.sina.com.cn/",
      
      }
      url = 'http://blog.sina.com.cn/s/blog_01ebcb8a0102zi2o.html?tj=1'
      page_text = requests.get(url,headers=headers).text
      tree = etree.HTML(page_text)
      img_src = tree.xpath('//*[@id="sina_keyword_ad_area2"]/div/a/img/@real_src')
      for src in img_src:
          data = requests.get(src,headers=headers).content
          with open('./123.jpg','wb') as fp:
              fp.write(data)
          # break
      

      另一种思路写代码:

import requests
from lxml import etree

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
    'Referer': 'https://blog.sina.com.cn/s/blog_01ebcb8a0102zi2o.html?tj=1'
}

url = 'https://blog.sina.com.cn/s/blog_01ebcb8a0102zi2o.html?tj=1'

page_text = requests.get(url=url, headers=headers).text  # .text获取源码数据

tree = etree.HTML(page_text)
img_src_list = tree.xpath('//*[@id="sina_keyword_ad_area2"]/div/a/img/@real_src')  # 解析出图片地址
# requests.get(url=img_src_list[0], headers=headers)  # [0]对第一张图片发起请求。
count = len(img_src_list)  # 计算一下要下载的图片的张数。
i = 0
while i < count:
    n = 1
    data = requests.get(url=img_src_list[i], headers=headers).content  # [i]对第i张图片发起请求。
    img_path = '../pydirectory/三里屯图片/' + f'{i}' + '.jpg'  # f'{i}'下载的图片命名为'i.jgp'。
    with open(img_path, 'wb') as fp:
        fp.write(data)
        print(img_path, ':下载保存成功!')
    i += n

图片懒加载

  • url:https://sc.chinaz.com/tupian/meinvtupian.html
  • 爬取上述链接中所有的图片数据
  • 图片懒加载(异步加载):
    • 主要是应用在展示图片的网页中的一种技术,该技术是指当网页刷新后,先加载局部的几张图片数据即可,随着用户滑动滚轮,当图片被显示在浏览器的可视化区域范围的话,在动态将其图片请求加载出来即可。(图片数据是动态加载出来)。
    • 如何实现图片懒加载/动态加载?
      • 使用img标签的伪属性(指的是自定义的一种属性)(real_src,暂时保存图片真正的地址)。在网页中,为了防止图片马上加载出来,则在img标签中可以使用一种伪属性来存储图片的链接,而不是使用真正的src属性值来存储图片链接。(图片链接一旦给了src属性,则图片会被立即加载出来)。只有当图片被滑动到浏览器可视化区域范围的时候,在通过js将img的伪属性修改为真正的src属性(将src的值改为real_src保存的值),则图片就会被加载出来。src保存的不是真正的链接,为属性保存的是真正的链接。伪属性的命名不一定只是real_src,也可以是任意的命名。
  • 如何爬取图片懒加载的图片数据?
    • 只需要在解析图片的时候,定位伪属性的属性值即可。
# 图片数据爬取
import requests
from lxml import etree
# 设置请求参数
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
    'Referer': 'https://sc.chinaz.com/'
}
# 发起请求,获取首页的页面源码数据。
for page in range(1, 6):
    if page == 1:
        url = 'https://sc.chinaz.com/tupian/meinvtupian.html'
    else:
        url = f'https://sc.chinaz.com/tupian/meinvtupian_{page}.html'
    print(f'正在爬取{page}页数据.......')
    # 对首页进行页面源码数据的获取
    response = requests.get(url=url, headers=headers)  # 第一次发请求,相当于进入首页界面。
    # print(response.apparent_encoding)  # 获取网页编码
    response.encoding = 'utf-8'  # 处理乱码
    page_text = response.text
    # 数据解析:图片标题和图片详情页url
    tree = etree.HTML(page_text)  # 注意这不能加引号,否则后面获取不了数据。创建etree对象
    li_list = tree.xpath('/html/body/div[3]/div[2]/div')  # 调用xpath函数
    for li in li_list:
        li.xpath('./div/a/@href')
        detail_url = 'https://sc.chinaz.com' + li.xpath('./div/a/@href')[0]  # 拼接图片详情url
        title = li.xpath('./div/a/text()')[0]  # 解析图片标题
        # 对图片的详情页发起请求,获取详情页的页面源码数据
        detail_response_text = requests.get(url=detail_url, headers=headers).text  # 第二次发请求,相当于进入大图界面。这是拿详情页面的源码数据。.text把源码数据转为文本数据。
        # 数据解析,获取详情页的大图地址
        detail_tree = etree.HTML(detail_response_text)
        img_src = detail_tree.xpath('/html/body/div[3]/div[1]/div[2]/div[1]/div[1]/p/a/@href')[0]

        # 对大图地址发请求,下载图片。
        img_data = requests.get(img_src, headers=headers).content  # 第三次发请求,相当于点击下载链接下载图片。content把源码数据转成二进制数据。下载到图片数据。.content把源码数据转为二进制数据(图片)
        img_path = '../pydirectory/美女图片/' + title + '.jpg'
        with open(img_path, 'wb') as fp:
            fp.write(img_data)
            print(title, ":下载保存成功!")

网络爬虫之数据解析 爬虫常用数据解析方式总结 阅读详情

相关推荐

Python网络爬虫的数据存储与解析

Python网络爬虫的数据存储与解析是爬虫开发过程中不可或缺的环节。通过选择合适的存储方式和高效的解析方法,我们能够确保从网页中提取到准确、有用的信息,并将其以易于查询和管理的方式存储起来。希望本文提供的代码和表格示例能够帮助开发者更好地理解和应用Python网络爬虫的数据存储与解析技巧。

shejizuopin的博客 494

初学python网络爬虫之数据解析篇

在当今的信息时代,数据已经成为了一种宝贵的资源。网络爬虫作为一种获取数据的重要手段,可以帮助我们从海量的互联网信息中提取出有价值的数据。而数据解析则是将爬取的数据转化为可理解和可利用的信息的过程。要想过滤网页的数据,首先要对服务器返回类型的数据形式做一些了解,这些数据一般分为两种。

m0_73931052的博客 2013

(七)python网络爬虫(理论+实战)——json数据解析

本节主要介绍了python网络爬虫如何解析json数据,通过某网站的实际数据示例掌握json数据的解析,加深对爬虫从分析到爬取再到解析这个过程的理解

c1007857613的专栏 4140

网络爬虫—03网络数据解析

文章目录一、正则表达式正则表达式匹配规则正则实现步骤Pattern和Match对象方法汇总1.pattern对象方法2.match对象方法3.search4.findall和finditer方法5.split方法6.sub方法7.匹配中文8.正则常量9.贪婪模式与非贪婪模式基于requests和正则猫眼电影top100定向爬虫二、XPath数据解析库基于requests和XPath猫眼电影TOP1...

小黑的博客 1516

Python网络爬虫技术实战:源代码与实验数据解析

requests库是一个用Python编写,用于发送HTTP请求的库。它允许你发送各种类型的请求(GET, POST, PUT, DELETE等)并能够处理多种类型的响应内容,如JSON、XML等。requests库的API设计优雅,简洁易用,是Python中最为流行的HTTP客户端库之一。requests的优势主要体现在以下几个方面:简单易用:API非常直观,上手容易,即使你是一名初学者,也能够快速学会如何使用requests进行网络请求。兼容性。

weixin_31569663的博客 2110

Java网络爬虫实战:从网页抓取到数据解析

爬虫,又称网络蜘蛛或网络机器人,是一种自动抓取网页信息的程序或脚本。它广泛应用于搜索引擎、数据分析、市场监测和信息采集等领域。通过编写爬虫程序,可以高效地收集互联网上大量的数据,为用户提供价值或为机器学习等高级应用提供丰富的训练样本。通过本章节的介绍,我们了解了网页抓取的原理,包括HTTP协议的基础知识和爬虫的工作机制。另外,我们还探讨了进行网页抓取前的准备工作,这包括目标网站分析和选择合适的爬虫框架。在下一章节中,我们将深入探讨数据解析方法,并对DOM和XPath解析技术进行实际应用上的分析。

weixin_42610671的博客 1722

Python网络爬虫技术——数据解析方法

Python中提供了许多解析网页数据的技术,包括正则表达式、XPath、Beatutiful Soup、JSONPath。接下来我将逐一介绍每一种数据解析的方法。

2401_84154561的博客 1104

三角洲行动交易行自动化脚本

DFMarketBot - 三角洲行动自动交易助手 DFMarketBot是一款专为三角洲行动游戏设计的交易行自动化工具,通过OCR识别和鼠标模拟实现自动补卡、补子弹功能。项目采用Python开发,支持Windows平台,主要功能包括: 自动检测并购买指定物品(房卡/子弹) 价格监控与智能购买(低于设定价格自动下单) 自定义购买数量与次数限制 支持窗口/无窗口两种游戏模式 使用前需安装Tesseract OCR引擎并配置游戏为1920*1080分辨率。通过JSON文件可灵活配置监控物品清单、理想价格和购买策

愤怒的阿木木的博客 3万+

python网络爬虫_Python网络爬虫实战(二)数据解析

Python网络爬虫实战(二)数据解析本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行。不管你是学习Java爬虫还是Python爬虫,都可以从中学到爬虫的编码思想。上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题。那么接下来我们就...

weixin_39852491的博客 249

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。 本文作者: nebulaf91 本文原始地址:最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很

nebulaf91的博客 33万+

在 NVIDIA Orin (JetPack 6.0) 上配置 PyTorch 2.4 + Torchvision 0.19 的完整避坑指南

本文提供在NVIDIA Jetson Orin设备上,基于JetPack 6.0系统配置PyTorch 2.4与Torchvision 0.19环境的完整指南。通过使用Miniconda环境隔离、安装特定版本PyTorch夜间构建版、编译匹配的Torchvision源码等步骤,解决版本不匹配、CUDA支持等常见问题,确保AI开发环境稳定可用。

weixin_29179311的博客 363

网络爬虫之数据解析方式

Python网络爬虫之数据解析方式 正则解析 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字、字母、下划线、中文 \W : 非\w \s :所有的空白字符...

aihuangzhi8131的博客 133

鸿蒙5.0进阶开发:UI开发-不依赖UI组件的全局自定义弹出框 (openCustomDialog)(推荐)

本文介绍通过入参形式为ComponentContent创建自定义弹出框............

AyomQAQ的博客 1850

python爬虫解析数据包_Python网络爬虫之三种数据解析方式

引入回顾requests实现数据爬取的流程指定url基于requests模块发起请求获取响应对象中的数据进行持久化存储其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析。因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据。因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式。至此,我们的数据爬取的流程...

weixin_39759890的博客 527

YOLOv8深度集成SDFM:显著增强特征细节与多尺度融合,实现小目标检测革命性提升

本文介绍了如何将SDFM(Superficial Detail Fusion Module)模块集成到YOLOv8目标检测模型中,以提升特征融合效能。SDFM通过精细的特征预校准、通道注意力机制和动态加权融合策略,有效解决了多尺度特征融合中的细节保留问题。实验表明,集成SDFM后YOLOv8的mAP50-95提升12.7%,召回率提升9.0%,精确率提升5.9%,显著增强了模型性能。教程详细阐述了SDFM的工作原理、代码实现步骤及优化思路,为研究者和开发者提供了实用的技术指南。

FJN110的博客 117

深入探讨 SAP ERP 物料主数据中的 Valuation Type

在 SAP ERP 系统中,是用于区分同一种物料在不同条件下的估价方法。物料的估价可以因产地、质量等级、供应商或批次的不同而有所差异。通过为物料设置不同的估价类别,使企业能够对这些差异进行有效管理。为了实现更细致的物料成本核算,SAP 系统通过(分批估价)功能允许为同一物料设置多个估价类型。这种方法特别适合那些在来源、质量、或其他参数上存在显著差异的物料。是 SAP ERP 和 SAP S/4HANA 中物料主数据的核心组成部分,为企业提供了灵活的成本管理工具。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1407

python之爬虫概述

什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据。 你可以爬去妹子的图片,爬取自己想看看的视频。。等等你想要爬取的数据,只要你能通过浏览器访问的数...

bestrivern的博客 807

28_Spring AI 干货笔记之 OpenAI 聊天功能

本文详细介绍了在Spring AI框架中集成OpenAI聊天模型的方法。内容涵盖API密钥配置、通过starter依赖启用自动配置、连接与模型参数的详细设置,并重点说明了运行时选项的动态覆盖机制。文章还深入讲解了多模态处理(图像与音频)、结构化输出、函数调用等高级功能,提供了示例控制器和手动配置指南,并讨论了与OpenAI兼容服务器的适配与推理模型思维链的获取。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 1656

05.Python网络爬虫之三种数据解析方式

05.Python网络爬虫之三种数据解析方式 引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析。因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也...

deng6648的博客 136

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

网络爬虫——网络数据解析

文章目录正则表达式正则模块re的使用re模块常量项目案例XPath解析库什么是XPath?XPath如何实现文档解析?XPath常用规则练一练项目案例 爬虫的四个主要步骤: 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的方式存储和使用) 网路数据解析就是将爬取到的...

C_teacher的博客 1473

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

爬虫的基本原理:网络爬虫、爬虫基本流程、解析方式、保存数据

爬虫的基本原理:网络爬虫、爬虫基本流程、解析方式 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据

自学python的博客 3552

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深入剖析网络爬虫:5 重结构与数据排查全解析

在当今数字化时代,网络爬虫作为获取互联网数据的有力工具,发挥着重要作用。对于想要深入了解和掌握网络爬虫技术的开发者来说,理解其 5 重结构以及数据排查技巧至关重要。本文将结合实际代码,全面地为大家讲解这两方面的知识。

m0_57836225的博客 1349

【Python网络爬虫】详解python爬虫中正则表达式、BeautifulSoup和lxml数据解析

在Python爬虫中,数据解析是关键步骤之一,用于从抓取的网页中提取所需的信息。有多种方法可以进行数据解析,其中最常用的包括正则表达式、BeautifulSoup和lxml库。

左手の明天的博客 1959

数据爬取 mail_Python网络爬虫实战(二)数据解析

Python网络爬虫实战(二)数据解析本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行。不管你是学习Java爬虫还是Python爬虫,都可以从中学到爬虫的编码思想。上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题。那么接下来我们就...

weixin_29081703的博客 521
上一篇: requests基础
下一篇: requests高级
天*天
博客等级 码龄3年 27粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值