python抓取一个网页的源代码并存储到本地文件

1.1读取一个网页的源代码:

url:我们要爬取的网页链接(例如:url = “https://www.hao123.com”)

#读取一个网页的源代码

import urllib.request
def read_pageHtml(url):
    file = urllib.request.urlopen(url)
    data = file.read()
    return data

url = "https://www.hao123.com"
data = read_pageHtml(url)
print(data)

 

1.2将读取的网页内容存储到本地文件的两种常用办法:

方法一:

storagePath:存储的位置+文件名(例如:storagePath = "C:/Users/shijun/desktop/2.html"

data:抓取的网页信息

#将读取的网页以网页的形式存储到本地文件
def storageToLocalFiles(storagePath, data):
    fhandle = open(storagePath,"wb")
    fhandle.write(data)
    fhandle.close()

storagePath = "C:/Users/shijun/desktop/2.html"
data =    #我们获取的网页信息
storageToLocalFiles(storagePath, data)

 运行结束之后我们就可以在桌面上看到一个网页了

方法二:

storagePath:存储的位置+文件名(例如:storagePath = "C:/Users/shijun/desktop/2.html"

url:我们要爬取的网页链接(例如:url = “https://www.hao123.com”)

#将读取的网页以网页的形式存储到本地文件
def s(url, storagePath):
    import urllib.request
    filename = urllib.request.urlretrieve(url, filename=storagePath)

 

 

1.3一些常用指令

1.3.1:常用指令

file.info() : 读取当前环境相关信息

file.getcode():获取当前抓取网页的状态码

file.geturl():获取当前抓取网页的URL地址

 

1.3.2:编码问题

URL是有一定规则,或者说,我们的字符串是有一定的要求的(比如:只可以是字母、数字、下划线、部分符号等,如果有汉字的话,很可能就执行不了)。如果我们的字符串不符合要求,很可能就无法运行。那是不是没有解决办法呢。答案是NO!

我们可以用一个叫quote()的方法对字符串进行编码,然后就可以运行了。

import urllib.request

s = "hello everyone!"
data_quote = urllib.request.quote("hello everyone!")
print(data_quote)

data_unquote = urllib.request.unquote(data_quote)
print(data_unquote)

输出结果为:

hello%20everyone%21
hello everyone!

 


2浏览器的伪装

这里的伪装只是一些初步的伪装(日常应该够用了),主要是对用户身份(User-Agent)和信息来源网址(Referer)两部分进行伪装。

信息来源网址(Referer):

https://www.bilibili.com/v/technology/digital/?spm_id_from=333.334.primary_menu.47#/  是  https://www.bilibili.com/的子网页。则此处的referer=https://www.bilibili.com/

 

注意data = urllib.request.urlopen(url).read()此处我们所获得的是二进制的字节码,有时候我们在对字节码进行编码的时候(data.decode(“utf-8)),发现会出现乱码的情况。这往往是我们在设置header的时候指定了"Accept-Encoding": "gzip, deflate, br",此时我们只需要将这行代码去掉就可以解决乱码问题。

"Accept-Encoding": "gzip, deflate, br"这个是用来设置从网站中接收的返回数据是否进行gzip压缩。如果设置了,就对数据进行压缩。而浏览器会自动的对数据进行gzip解压。这也就解释了为什么我们通过浏览器查看网页源代码没问题,自己爬取下来,然后打开就会出现乱码。

import urllib.request
#浏览器伪装
def browsersCamouflage():
    headers = {
        "Accept": "image/webp,image/apng,image/*,*/*;q=0.8",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Connection": "keep-alive",
        "Referer": "https://www.hao123.com/",
        "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36"
    }
    #创建opener对象
    opener = urllib.request.build_opener()
    hdeadall = []
    #过循环遍历字典,构造headers信息
    for key, value in headers.items():
        item = (key, value)
        hdeadall.append(item)
    #设置opener对象的头信息
    opener.addheaders = hdeadall
  Return opener


url = "https://www.hao123.com"
opener = browsersCamouflage()
#安装opener为全局
urllib.request.install_opener(opener)
data = urllib.request.urlopen(url).read()
print(data)

 

3正则表达式

 


  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Python抓取网页视频可以使用第三方库来实现,比如说使用 requests 库来发起 HTTP 请求,再使用 BeautifulSoup 库来解析 HTML 文档,最后使用 ffmpeg 库来下载和处理视频。 下面是一个简单的例子: ``` import requests from bs4 import BeautifulSoup # 发起 HTTP 请求并获取响应 response = requests.get('http://example.com/video') # 使用 BeautifulSoup 解析 HTML 文档 soup = BeautifulSoup(response.text, 'html.parser') # 找到视频所在的标签 video_tag = soup.find('video') # 获取视频地址 video_url = video_tag['src'] # 使用 ffmpeg 下载和处理视频 # 下载视频 !ffmpeg -i $video_url -c copy video.mp4 # 将视频格式转换为 mp3 !ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -ab 192k -f mp3 audio.mp3 ``` 注意:在这个例子中,我们使用了 ffmpeg 库来处理视频,但是你也可以使用其他的库,比如说 moviepy 库。 ### 回答2: Python抓取网页视频可以使用第三方库如requests、BeautifulSoup和urllib等来实现。 首先,导入所需的库: ```python import requests from bs4 import BeautifulSoup import urllib ``` 其次,通过requests库获取网页HTML内容: ```python url = "http://www.example.com" # 网页的URL response = requests.get(url) html_content = response.content ``` 然后,利用BeautifulSoup库解析HTML内容,找到视频的标签: ```python soup = BeautifulSoup(html_content, 'html.parser') video_tag = soup.find('video') # 找到视频标签 video_url = video_tag['src'] # 获取视频的URL ``` 最后,使用urllib库下载视频文件: ```python urllib.request.urlretrieve(video_url, 'video.mp4') # 下载视频文件 ``` 以上就是使用Python抓取网页视频的简单流程。当然,具体的网页结构和视频的地址获取方式会因网站而异,需要根据实际情况进行相应的修改。 ### 回答3: Python可以通过爬虫技术来抓取网页上的视频。具体步骤如下: 1. 导入必要的库: 首先,需要导入requests库来发起网络请求,以获取网页源代码;另外,还需要使用BeautifulSoup库来解析网页源代码。 2. 发起网络请求: 使用requests库中的get方法,传入视频所在网页的URL,可以获取该网页源代码。 3. 解析网页源代码: 使用BeautifulSoup库来解析网页源代码,可以方便地提取出网页上的视频相关信息。可以使用该库的find_all方法来搜索指定的HTML标签,再根据标签属性或其它特征来定位视频元素。 4. 提取视频链接: 在解析网页源代码时,可以通过BeautifulSoup库找到视频所在的标签元素,并获取该元素的视频链接。视频链接一般是包含在HTML标签的属性中,需根据具体标签和属性结构进行提取。 5. 下载视频: 通过获取到的视频链接,使用requests库的get方法发起下载请求,并保存为本地视频文件。可以通过open方法创建一个文件,再通过write方法将请求返回的数据写入文件中。 需要注意的是,部分网站可能对视频进行了保护措施,如使用视频云服务、加密等技术,导致视频链接无法直接获取。此时,可以考虑分析网页中的JavaScript代码,了解视频链接的生成方式,并在Python中模拟这些生成方式来获取视频链接。 总之,利用Python的网络爬虫技术,可以方便地抓取网页上的视频,并保存为本地文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮卡丘学算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值