python爬虫 将在线html网页中的图片链接替换成本地链接并将html文件下载到本地

html-css011

python爬虫 将在线html网页中的图片链接替换成本地链接并将html文件下载到本地,第1张

import os,re

def check_flag(flag):

regex = re.compile(r'images\/')

result = True if regex.match(flag) else False

return result

#soup = BeautifulSoup(open('index.html'))

from bs4 import BeautifulSoup

html_content = '''

<a href="https://xxx.com">测试01</a>

<a href="https://yyy.com/123">测试02</a>

<a href="https://xxx.com">测试01</a>

<a href="https://xxx.com">测试01</a>

'''

file = open(r'favour-en.html','r',encoding="UTF-8")

soup = BeautifulSoup(file, 'html.parser')

for element in soup.find_all('img'):

if 'src' in element.attrs:

print(element.attrs['src'])

if check_flag(element.attrs['src']):

#if element.attrs['src'].find("png"):

element.attrs['src'] = "michenxxxxxxxxxxxx" +'/'+ element.attrs['src']

print("##################################")

with open('index.html', 'w',encoding="UTF-8") as fp:

fp.write(soup.prettify()) # prettify()的作⽤是将sp美化⼀下,有可读性

可以使用requests模块完成下载

# --------------------第一种:使用headers携带cookie-----------------------------

# coding = utf-8

import requests

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 6.1 Win64 x64),  

'Cookie':'你的cookies',

}

# 发起请求,获取二进制数据

html_str = requests.get(url,headers=headers).content

# 写入文件,采用二进制写入文件

with open('路径/文件名.后缀','wb') as f:

f.write(html_str)

# --------------------第二种:在requests直接携带--------------------------------

# coding = utf-8

import requests

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 6.1 Win64 x64),  

}

cookies = {你的cookies,这里必须是以键值对,也就是字典的形式}

# 发起请求,获取二进制数据

html_str = requests.get(url,headers=headers,cookies = cookies).content

# 写入文件,采用二进制写入文件

with open('路径/文件名.后缀','wb') as f:

f.write(html_str)

python提取html内容的方法。如下参考:

1.首先,打开Python来定义字符串,在定义的字符串后面加上中括号,然后在要提取的字符位置输入zhidao。

2.点击运行程序,可以看到系统打印出的第一个字符在我们定义的字符串中,因为字符串是空格,空格占据了位置。

3.这里可以看到字符显示在程序运行界面的底部,根据我们指定的内容输出,这里写的版本是0输出的第一个字符。

4.还可以一次打印多个字符。如图所示,用冒号分隔字符串的开头,并将其写入方括号中以显示多个字符。

5.这里的输入位置是0到5,你可以发现,与我们的字符串内容相比,字符的相应位置被打印出来,而字符的另一个位置则完全不显示。

6.如果字符串比较大,大于内容的权重,从下面的数字比较方便,也可以直接输出倒数的字符。

7.这时直接用负号来表示这是倒数的位置,它使用起来也特别方便。