python爬取内网文件
1、导入python库
import os
import urllib.request
import urllib.parse
import re
需要这四个库
2、创建gethtm()函数抓取网页代码:
def gethtm(url):
headers={‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0’}
request = urllib.request.Request(url=url,headers=headers)
response=urllib.request.urlopen(request)
html=response.read().decode(‘gb2312’)
return html
返回的网页代码是一个字符串,headers是模拟浏览器请求的请求头,url是要爬取的网址
3、创建下载文件的函数
def getfile(url,topath): #创建两个参数url是要爬取的网页,topath是下载出来的文件的存放路径。
html=gethtm(url) #调用上面的gethtm()函数获取网页代码
print(html)
html1=re.findall(pattern=‘
<a.*?
’,string=html) #用re库从代码中通过正则表达式匹配下载连接print(html1) 打印出来是这样的 文件的路径 这个还不能下载 需要创建列表对它进行数据处理。
list=[]
for url1 in html1:
list.append(url1.lstrip('<p><a href="').split('"',1)[0])
for name in list:
post_url='http://10.12.8.11/'+urllib.parse.quote(name)
print(post_url)
filename = os.path.join(topath,name.lstrip('china/QA/form/'))
urllib.request.urlretrieve(url=post_url, filename=filename)
通过去除首尾的多余字符再加上内网的IP地址后 就可以生成可下载的链接,就可以下载到本地了
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0d827e0dd6b041abac2abfb2555a74de.png)
print('恭喜你下载完成,你真棒')
可下载的链接,下载完成
url = “http://10.12.8.11/cnqaforms.htm”
topath = r’D:\U盘\forms’
getfile(url,topath)
``
完整代码如下
import os
import urllib.request
import urllib.parse
import re
def gethtm(url):
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'}
request = urllib.request.Request(url=url,headers=headers)
response=urllib.request.urlopen(request)
html=response.read().decode('gb2312')
return html
def getfile(url,topath):
html=gethtm(url)
print(html)
html1=re.findall(pattern='<p><a.*?</a></p>',string=html)
print(html1)
list=[]
for url1 in html1:
list.append(url1.lstrip('<p><a href="').split('"',1)[0])
for name in list:
post_url='http://10.12.8.11/'+urllib.parse.quote(name)
print(post_url)
filename = os.path.join(topath,name.lstrip('china/QA/form/'))
urllib.request.urlretrieve(url=post_url, filename=filename)
print('恭喜你下载完成,你真棒')
url = "http://10.12.8.11/cnqaforms.htm"
topath = r'D:\U盘\forms'
getfile(url,topath)