添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

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

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

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

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

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

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

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

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! def draw_base_list(doc): lilist=soup.find('div',{'class':'babynames-term-articles'}).findAll('article'); #爬取一级参数 for x in lilist: str1='' count=0 a='@' EnName=x.find('a').text; Mean=x.find('div',{'class':'meaning'}).text; Sou=x.find('div',{'class','related'}).findAll('a') Link=x.find('a').get('href'); for x in Sou: if count!=0:#添加计数器判断是否为第一个,不是则添加@ str1=str1+a s=str(x) #将x转换为str类型来添加内容 str1=str1+s count+=1 Source=str1 print(Source);     print(Meaning)

运行后发现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参数爬取详细信息,为避免频繁访问主机,我们同样将详情页的源代码保存至本地并解析。

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! def draw_detail_list(): str1=‘’ meta="boy" doc=BeautifulSoup(open('nn.html',encoding='utf-8'),features='html.parser') Des=doc.find('div',{'class':'single-babyname-wrapper'}).findAll('p') Gen=doc.find('div',{'class':'entry-meta'}).find('a') #print(Gen) g=str(Gen) for i in Gen: if meta in g: Gender="boy" else: Gender="girl" #print(Gender) for x in Des: #print(x) if x.find('a')==None: #该标签下有我们不需要的信息,查看源代码找到信息之间的联系,发现不需要的信息中都有链接 c=str(x) change1=re.sub('<p>','',c) #与一级信息函数一样删除指定内容 change2=re.sub('</p>','',change1) change3=re.sub('\t','',change2) change=re.sub('\n','@',change3) str1=str1+change #Description=x.text #print(Description) Description=str1 #print(Description) data={ #将数据存进字典中方便将数据保存至csv文件或数据库中 'EnName':EnName, 'CnName':'', 'Gender':Gender, 'Meaning':Meaning, 'Description':Description, 'Source':Source, 'Character':'', #网页中没有的信息数据列为空 'Celebrity':'', 'WishTag':'' #print(data)

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

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! def draw_base_list(doc): ...... #爬取一级参数 for x in lilist: ...... for x in Sou: ...... ...... draw_detail_list(Link,EnName,Meaning,Source) #将数据传给二级信息函数 def draw_detail_list(url,EnName,Meaning,Source): ...... for i in Gen: ...... for x in Des: ...... data={ ...... write_dictionary_to_csv(data,'Names') #将字典传给存放数据函数,并给定csv文件名 def write_dictionary_to_csv(dict,filename): file_name='{}.csv'.format(filename) with open(file_name, 'a',encoding='utf-8') as f: file_exists = os.path.isfile(filename) w =csv.DictWriter(f, dict.keys(),delimiter=',', quotechar='"', lineterminator='\n',quoting=csv.QUOTE_ALL, skipinitialspace=True) w.writerow(dict)

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

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

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

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

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

Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可。现在我来分享一下爬取资料的调试过程。一、将网页源代码存在本地1、打开需要爬取的网页,鼠标右键查看源代码2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html二、在Python中打开本地html文件打开并读取本地文件可使用BeautifulSoup方法直接打开 soup=BeautifulSoup(ope
BeautifulSoup4和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。 with open('test.html', 'r', encoding='utf-8') as f: Soup = BeautifulSoup(f.read(), 'html.parser') titles = Soup....
https://blog.csdn.net/ak739105231/article/details/88074557 在python:html简介中,读取html文件,下面就写一个服务器,实现:简单的读取并发送; 首先,先一个html文件: <!DOCTYPE html> <html lang="en"> <meta char...
HTML 不是一种编程语言,而是一种标记语言。 Html主要用来描述网页中所需要的组件,例如:文本框、表格、图片、视频等等,也对网页进行排版。 HTML的源文件,称为“网页”,通常以.html或者.htm为结尾。 可以使用任意文本编辑器编辑,需要使用浏览器执行。 访问:https://www.w3school.com.cn/ 1 标记(标签)基本语法 1.定义标签 HTML语言以标签形式体现,这些标签通常 with urlopen('file:///path/to/local/file.html') as f: # 读取文件内容并解码 html = f.read().decode('utf-8') 你还可以使用 Python 的 `open()` 函数来打开本地文件。例如: # 打开本地文件 with open('/path/to/local/file.html', 'r', encoding='utf-8') as f: # 读取文件内容 html = f.read() 然后,你可以使用 Python 的 `BeautifulSoup` 库来解析 HTML。例如: from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') 这样就可以在 `soup` 对象中使用 BeautifulSoup 的方法来解析 HTML 了。