python爬取过程_Python 小爬虫流程总结

news/2024/6/27 23:06:22

接触Python3一个月了,在此分享一下知识点,也算是温故而知新了。

接触python之前是做前端的。一直希望接触面能深一点。因工作需求开始学python,几乎做的都是爬虫。。第一个demo就是爬取X博数据,X博的API我在这就不吐槽了 。用过的估计都晓得。

好了 。下面进入正题,,一个小demo的开始与结束 。

1.首先对于像我一样0基础的,推荐几个网址:

廖雪峰的教程从安装到基本语法、模块安装等等基础都不简单易懂。这里就不赘述了

(1).http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

(2)http://cn.python-requests.org/zh_CN/latest/ requests模块的语法。请求是爬数据的起始点 ,这个可以多了解(然而我也是初学)

(3)https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html BeautifulSoup模块(核心就是节点操作,和js的节点操作挺像)

爬取简单数据我个人总结就是大致的 3点:

1、请求数据

2、进行数据处理

3、写数据

第一点 请求的数据 会有几种可能:

1、很简单的html页面。。就直接requests就可以请求成功

2、js渲染的页面 (这种页面超多)requests请求一堆js数据 (以前我用的一个模块 selenium (代码基于浏览器运行) 推荐大家千万别用,性能 很差。)

3、需要登录才能获取(( ̄▽ ̄)")至今登录我都是用的cookie 请求登录—— 其他更好的方法目前还在研究途中 有验证码更麻烦 balabala...(chookie有效期长的话直接就用就好了 )

4、json数据

第二点 数据处理 会有几种可能:

1、请求的数据是简单的html结构页面--直接BS4解析就好了

2、请求的数据是json--导入json模块进行解析

3、请求的数据是简单的js渲染的html页面

遇到这种页面(通过抓包 或者简单的在网站上审查请求) 然后找的你想要的那部分数据(数据有可能是json数据 有可能嵌到js中)

如果是js渲染的html 例如这样:

995051-20160924182449309-2066772878.png

这其实就是js拼写的html,,只要把其他无用的数据匹配掉用正则找到剩下想要的html文本就好了 。

995051-20160924183254527-803231809.png

然后BS4解析。。

第三点 写数据(当初一个编码格式弄了半天 在这我会多啰嗦几句)

open方法进行文件打开 里面的参数进行文件格式设置,读写文件、编码格式操作

with open("XXX.xxx","a",encoding="utf-8") as f :

f.write('''写入的数据''')

文件格式我用过的就是txt、csv 、xml 大部分文本格式都支持的。

a--是创建文件 每次写都是重新创建

w--是追加

a--是读数据

encoding="utf-8"这句话 不加encoding= 在windows系统下会报编码错误 linux不会。

然后就是数据量太大 写入到数据库

数据库就用sqlite 记得引入模块 import sqlite3(就是创建数据表等等。。教程里面都有。。)

目前先就这样,以后会不定期总结 也会直接更代码案例等...


http://www.niftyadmin.cn/n/2067600.html

相关文章

oracle11g job 创建,oracle11g自动分区

在Oracle10g中,没有定义间隔分区,只能通过范围分区实现间隔分区功能,如果要实现自动创建分区,只能通过创建JOB或者scheduler来实现;而在11g中,Oracle直接提供了间隔分区功能,大大简化了间隔分区…

老板居然让我用Java造假数据

1. 前言 老板说,明天甲方要来看产品,你得搞点数据,而且数据必须是“真”的,演示效果要好看一些,这样甲方才会采购咱们的产品。一般开发接到这种过分要求都不会很乐意去做,这完全是体力劳动了,而…

python元组转字典_Python 字典转元祖问题

求各位大佬帮忙,本人新手遇到问题有点烦躁,如下: 需求如下: Python2.7 a {"beijing":20,"shanghai":30} 想要得到: b (["beijing","shanghai"],[20,30]) 并且希望元祖 b 中…

Payment Spring Boot 1.0.2.RELEASE 发布,接入微信支付分、先享卡功能

Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库。配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付。 演示例子:https://github.com/NotFound403/payment-spring-boot-samples 文档:https…

去掉二级页面 tabs 菜单, 修改返回按钮

imports: [ /*引入的模块 依赖的模块*/  BrowserModule,  ComponentsModule,  IonicModule.forRoot(MyApp,{    tabsHideOnSubPages: true, //隐藏全部子页面 tabs    backButtonText: 返回 /*配置返回按钮*/  })]转载于:https://www.cnblogs.com/yuyedaocao/p…

完整的Java从小白到大牛的自学路线

点击关注"码农小胖哥"右上角"设为星标"好文章送达比别人快最近很多读者在问:Java 怎么学习啊?有没有什么学习路线?我相信这些读者或多或少都有一些 Java 基础,但由于看不到全貌,学了一段时间很容易…

oracle备库搭建,Oracle DG–Rman备份集搭建备库

Oracle DG–Rman备份集搭建备库常用的在线备库搭建有Rman auxiliary 和Rman备份集恢复两种方式。(一)在环境配置OK的问题下,使用一条Rman命令就可以完成备库初始化同步,比较简单。# 登陆rman target sys/Oracle123orcl_pri auxiliary sys/Oracle123orcl_…

c++ map 析构函数_C++虚函数、重载、覆盖

C基础(五)虚函数、重载、覆盖、隐藏 虚函数总是跟多态联系在一起,引入虚函数可以使用基类指针对继承类对象进行操作!虚函数:继承接口(函数名,参数,返回值),但是实现不继承(函数体)非虚函数:继承…