目的

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

导入库

lxml用于解析解析网页HTML等源码,提取数据。一些参考:https://www.cnblogs.com/zhangxinqi/p/9210211.html

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')

  

python网络爬虫(7)爬取静态数据详解的更多相关文章

  1. python网络爬虫《爬取get请求的页面数据》

    一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在python3中的为urllib.request和urllib. ...

  2. python网络爬虫--简单爬取糗事百科

    刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4 ...

  3. Python网络爬虫_爬取Ajax动态加载和翻页时url不变的网页

    1 . 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新 ...

  4. Python网络爬虫 | Scrapy爬取妹子图网站全站照片

    根据现有的知识,写了一个下载妹子图(meizitu.com)Scrapy脚本,把全站两万多张照片下载到了本地. 网站的分析 网页的网址分析 打开网站,发现网页的网址都是以 http://www.mei ...

  5. python爬取疫情数据详解

    首先逐步分析每行代码的意思: 这是要引入的东西: from os import path import requests from bs4 import BeautifulSoup import js ...

  6. python网络爬虫(10)分布式爬虫爬取静态数据

    目的意义 爬虫应该能够快速高效的完成数据爬取和分析任务.使用多个进程协同完成一个任务,提高了数据爬取的效率. 以百度百科的一条为起点,抓取百度百科2000左右词条数据. 说明 参阅模仿了:https: ...

  7. Python实战项目网络爬虫 之 爬取小说吧小说正文

    本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...

  8. 初识python 之 爬虫:爬取中国天气网数据

    用到模块: 获取网页并解析:import requests,html5lib from bs4 import BeautifulSoup 使用pyecharts的Bar可视化工具"绘制图表& ...

  9. python3编写网络爬虫19-app爬取

    一.app爬取 前面都是介绍爬取Web网页的内容,随着移动互联网的发展,越来越多的企业并没有提供Web页面端的服务,而是直接开发了App,更多信息都是通过App展示的 App爬取相比Web端更加容易 ...

随机推荐

  1. 爬取百度网盘资源报user is not authorized, hitcode:119

    爬取百度网盘资源报user is not authorized, hitcode:119 一.总结 一句话总结: 可能是百度网盘禁止非客户端环境下载大文件,所以将请求头改为客户端:'User-Agen ...

  2. VLC-Qt 入门指南

      关于 VLC-Qt VLC-Qt:一个结合了 Qt 应用程序和 libVLC 的免费开源库.它包含了用于媒体播放的核心类,以及用于更快速地进行媒体播放器开发的一些 GUI 类. 官网地址:http ...

  3. matplotlib之条形图

    1.知识点 1.plt.figure(figsize=(20,8),dpi=80)设置图像大小,主要参数为figsize(a,b) 2.plt.barh(range(len(a)),b,height= ...

  4. JavaScript 格式化数字成金额格式

    在看公司一个项目的JavaScript代码时,发现一段JavaScript代码,是把数字格式化成金额格式 比如: 12345.678 格式化成  12,345.68 看完代码后,google了一下,发 ...

  5. 2、puppet资源详解

    定义puppet资源 puppet资源抽象 资源定义 每一个资源有一个type.一个title和一个属性集合(attribute) type {'title':   //type表示资源类型,  ti ...

  6. python programming作业10(仍有一点点小bug)

    # -*- coding: utf-8 -*- import os import platform import sys from PyQt5.QtCore import * from PyQt5.Q ...

  7. Python内置函数reversed()用法分析

    Python内置函数reversed()用法分析 这篇文章主要介绍了Python内置函数reversed()用法,结合实例形式分析了reversed()函数的功能及针对序列元素相关操作技巧与使用注意事 ...

  8. pika常见问题解答(FAQ)

    1 编译安装 Q1: 支持的系统? A1: 目前只支持Linux环境,包括Centos,Ubuntu: 不支持Windowns, Mac Q2: 怎么编译安装? A2: 参考编译安装wiki Q3: ...

  9. 用yum安装的方法部署lamp服务

    # yum install -y httpd php php-mysql mariadb mariadb-server# vim /etc/httpd/conf/httpd.conf   <If ...

  10. Python 课件笔记

    Python 3.0 课件笔记 我们需要做的就是认真听取每一堂课,私下阅读老师博客笔记进行再复习,综合理解后写下自己的笔记,加深印象! Day1 - Python基础1 介绍.基本语法.流程控制