爬虫案例——翻页爬取网页所有链接以及链接对应内容

翻页爬取网页所有链接以及对应内容(爬取静态网页未使用框架)

爬取步骤

1.对每一页发送请求
2.获取每一页中的链接地址
3.对链接的内容设置提取规则并爬取
4.储存所有数据为CSV文件

前置步骤

#coding=utf-8
import re
import os
import pandas as pd
from bs4 import BeautifulSoup
import requests

观察发现第一页和第二页的网址区别只有最后的pagenow=1和pagenow=2

对每一页进行请求获取链接

start_url='http://www.miit.gov.cn/datainfo/resultSearch?searchType=advancedSearch&categoryTreeId=1128&pagenow='
link=[]
for i in range(1,106):
	start=start_url+str(i)#105页每页的网址
	response=requests.get(start)
	content=response.text#获取网页解析内容
	urls=re.findall(r",content)#提取网址,也可以用BeautifulSoup写
	urls=list(set(urls))#删除所有重复的链接
	link.append(urls)#储存链接
for i in range(0,len(link)):
	link[i]+='http://www.miit.gov.cn'#组成完整链接
	#(urllib.parse.urljoin也可以进行链接拼接)

设置链接内容的爬取规则提取需要的信息并储存

table=pd.DataFrame()
for i in link:
	content=requests.get(i).text
	soup=BeautifulSoup(content,'lxml')#用lxml解析
	label={i: soup.find_all('th')[i].string for i in range(0,len(soup.find_all('th')))}#提取标签
	feature={i: soup.find_all('td')[i].string for i in range(0,len(soup.find_all('td')))}#提取内容
	del feature[7],feature[list(feature)[-1]]#处理内容,去除不要的
	data=pd.DataFrame([label,feature],index=[0,1])#转化成表
	data.to_csv('test.csv',index=False,encoding='utf-8-sig',header=None)
	data=pd.read_csv('test.csv')#通过设置header为None再读取将label变成表头
	tabel=table.append(data)#将所有数据拼接起来
table=pd.concat([table,pd.DataFrame(link,columns=['链接'])],axis=1)#将链接的地址放到表最后一列
table.to_csv('326期汽车数据.csv',index=False,encoding='utf-8-sig')#数据储存为326期汽车数据
os.remove('test.csv')#删除中途产生的文件		

你可能感兴趣的:(爬虫)