python网络爬虫爬取数据_python网络爬虫(7)爬取静态数据详解

目的

爬取http://seputu.com/数据并存储csv文件

导入库

requests请求网页

chardet用于判断网页中的字符编码格式

csv用于存储文本使用。

re用于正则表达式from lxml import etree

import requests

import chardet

import csv

import re

获取网页

生成网页头带入到request.get中,可以模拟浏览器。其中的网页头,可以在浏览器控制台,network下查找到。user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'

headers={'User-Agent':user_agent}

r=requests.get('http://seputu.com/',headers=headers)

判断并转换编码r.encoding=chardet.detect(r.content)['encoding']

解析网页html=etree.HTML(r.text)

提取网页信息

浏览器打开对应网站,找到要提取的标签,通过元素审查,完成html文本内容的抽取。

这里抽取的内容为h2_title,href,title内容。title通过正则表达式完成分组,并进行数据提取。

注意的是:python正则表达式部分,不支持部分的零宽断言语法,采用分组方案,避开了可能出现的错误!

如以下代码会出错:import re

box_title='[2012-5-23 21:14:42] 盗墓笔记 贺岁篇 真相'

pattern=re.compile(r'(?<=\[.*\]\s).*')

result1=re.search(pattern, box_title)

rows存储了二维数据,用于写入csv文件。div_mulus=html.xpath('.//*[@class="mulu"]')

rows=[]

for div_mulu in div_mulus:

div_h2=div_mulu.xpath('./div[@class="mulu-title"]/center/h2/text()')

if len(div_h2)>0:

h2_title=div_h2[0]

a_s=div_mulu.xpath('./div[@class="box"]/ul/li/a')

for a in a_s:

href=a.xpath('./@href')[0]

box_title=a.xpath('./@title')[0]

pattern=re.compile(r'\s*\[(.*)\]\s+(.*)')

result1=re.search(pattern, box_title)

rows.append([h2_title,result1.group(2),href,result1.group(1)])

pass

pass

pass

存储数据

建立header一维数据,配合之前rows二维数据,通过w权限,配合writer方法,完成一维、二维的数据写入

通过最后的输出,标记正常完成。headers=['title','real_title','href','date']

with open('text.csv','w') as f:

f_csv=csv.writer(f,)

f_csv.writerow(headers)

f_csv.writerows(rows)

print('finished')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值