快捷搜索: 王者荣耀 脱发

python解析本地HTML文件

Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可。现在我来分享一下爬取资料的调试过程。

一、将网页源代码存在本地

1、打开需要爬取的网页,鼠标右键查看源代码 2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html 二、在Python中打开本地html文件

打开并读取本地文件可使用BeautifulSoup方法直接打开

soup=BeautifulSoup(open(ss.html,encoding=utf-8),features=html.parser)  #features值可为lxml

解析后可以直接使用soup,与请求网页解析后的使用方法一致

三、使用本地文件爬取资料

1、先爬取主页的列表资料,其中同义内容使用“@”符号连接

运行后发现Source和Meaning中包含了标签中的内容,我们使用正则表达式re.sub()方法删除str中指定内容。查看源代码可以发现标签内容只有一个链接,可以获取标签内的链接后再指定删除。

首先在for循环内给定一个值获取标签内的链接link=x.get(‘href’),接着使用sub方法指定删除link。代码如下:

link=x.get(href)
change2=re.sub(link,,s)

运行后我们发现str中还存在标签名,在for循环中指定多余内容删除:

link=x.get(href)
s=str(x)
change1=re.sub(<a href=",,s)
change2=re.sub(link,,change1)
change3=re.sub(">,,change2)
change4=re.sub( Baby Names,,change3)
change5=re.sub(</a>,,change4)
change=re.sub( ,,change5)

最后就能得到想要的信息。

2、再爬取详细信息

通过def draw_base_list(doc)函数向二级详情函数传递Link参数爬取详细信息,为避免频繁访问主机,我们同样将详情页的源代码保存至本地并解析。

3、将爬取下来的数据存入csv文件中

打开文件后发现没有文件头,为避免重复写入文件头,判断文件是否为空,若为空则写入文件头:

#防止每次循环重复写入列头
if os.path.getsize(file_name)==0 :  #通过文件大小判断文件是否为空,为0说明是空文件
    w.writeheader()

再次运行后文件头正常写入文件中。

4、访问主机,完成信息爬取

确定代码正确没有错误后就可以将打开本地文件的代码改成访问网页,最后完成数据的爬取。

经验分享 程序员 微信小程序 职场和发展