python经常用到的东西。

1.0 join()函数

语法: 'sep'.join(seq) 参数说明 sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典 上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

>>> lt=['abc',"def","-good"]
>>> pt="".join(lt)
>>> pt
'abcdef-good'
>>> at=" ".join(lt)
>>> at
'abc def -good'
>>> tp=("a","b","d")
>>> t="".join(tp)
>>> t
'abd'

拆分函数。

Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串

语法 split() 方法语法: str.split(str="", num=string.count(str)). 参数 str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。 num -- 分割次数。

Python split()方法

1.0 User-Agent机制 通过游览器的开发者工具中看到,每次进行http访问时,它的请求头里都有User-Agent这个参数,列如: user-agent指的是访问网站时的用户代理,简单的说,它指的是你的访问终端,即游览器、硬件平台、系统软件的相关信息。 现在很多网站为了防爬虫,都会对user-agent这个参数进行检测,我们在爬数据时尽量把这个参数带上。

在爬取数据时也可以合理地切换不同的user-agent来营造新的客户机环境,降低被侦测的几率,提升其并发抓取数据的能力。特别是对应单点式登录时,使你在同台服务器上提升数据并发爬取的能力(即模拟多个用户登录)。(属个人意见,请大家指教)

2.0 Referer机制

每次进行http访问时,它的请求头里经常会包含referer这个参数 referer翻译成中文是“引用”的意思,在http头里指代的是引用站点,即访问该链接的前一个访问的链接,告诉该链接他是从哪里跳转过来的。 为了反爬虫,部分网站或接口都对referer做了监控,如淘宝等网站。无referer或假referer都被认定为非法访问。这时候就需要我们用游览器开发者工具去跟踪一下该链接访问流程,从而提取出对应的referer加到请求头中,来实现数据爬取。

3.0 cookie 这可是重点啊,cookie在我们的web应用中,常常用来辨别用户身份、进行session跟踪等功能,也起到了反爬虫作用。以下我会简述我在实践中所遇到的cookie反爬虫机制和一些对策。(如有问题请及时提出,谢谢) 身份验证 很多网站的数据都是需要你登录后才能进行数据爬取,而用户的登录状态则是记录在cookie中,大部分的网站都是把sessionId作为key放在cookie中,来跟踪用户。这个时候我们就需要去模拟用户的登录来获取对应的cookie。 模拟登陆是关键点也是个大难点,只要你成功实现模拟登陆,后面的数据爬取都将不是问题。这里我就拿比较普通的网站来举例子: 首先是打开游览器开发者工具,先人工尝试一遍登录,细细观察整个流程确定需要哪些参数,需要注意cookie的变化。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏欧阳大哥的轮子

从Xcode10不再支持libstdc++说起

众所周知从Xcode10起,苹果摒弃了对libstdc++库的支持转而支持libc++库了。这两个库在Xcode9甚至更早的版本就已经同时存在于系统中并且可供开...

45330
来自专栏程序员互动联盟

【专业技术】Linux设备驱动第六篇:高级字符驱动操作之iotcl

在之前我们介绍了如何实现一个简单的字符设备驱动,并介绍了简单的open,close,read,write等驱动提供的基本功能。但是一个真正的设备驱动往往提供了比...

36680
来自专栏SDNLAB

SDNLAB技术分享(三):OpenDaylight中编程抽象的实现

这次主要分三部分说一下,首先我会粗略介绍一下maple system。 之后将以这个为例来阐述一下ODL模块的开发过程。 最后会说明一下ODL模块的结构。 目前...

374100
来自专栏iKcamp

手把手教你撸一个 Webpack Loader

文:小 boy(沪江网校Web前端工程师) 本文原创,转载请注明作者及出处 ? 经常逛 webpack 官网的同学应该会很眼熟上面的图。正如它宣传的一样,w...

49840
来自专栏架构师之旅

JVM内存管理------JAVA语言的内存管理概述

引言 内存管理一直是Java语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑。不过世界上不存在十全十...

20270
来自专栏FreeBuf

Java反序列化漏洞从理解到实践

一、前言 在学习新事物时,我们需要不断提醒自己一点:纸上得来终觉浅,绝知此事要躬行。这也是为什么我们在学到知识后要付诸实践的原因所在。在本文中,我们会深入分析大...

337100
来自专栏同步博客

制作类似ThinkPHP框架中的PATHINFO模式功能(二)

  距离上一次发布的《制作类似ThinkPHP框架中的PATHINFO模式功能》(文章地址:http://www.cnblogs.com/phpstudy201...

7850
来自专栏流柯技术学院

jstack+top定位性能问题

定位性能问题,尤其是cpu使用率过高时,经常需要查找cpu消耗较高的线程,然后查看其堆栈,从而进入代码定位问题。    

40120
来自专栏不会写文章的程序员不是好厨师

伪共享(False Sharing)和缓存行(Cache Line) 大杂烩

在上篇介绍LongAdder的文章中,我们最后留下了一个问题,为什么Cell中要插入很多个实际上并没有使用的Long变量?这个问题就得从False Sharin...

17210
来自专栏吴裕超

Protocol Buffers 在前端项目中的使用

公司后端使用的是go语言,想尝试用pb和前端进行交互,于是便有了这一次尝试,共计花了一星期时间,网上能查到的文档几乎都看了一遍,但大多都是教在node环境下如何...

72740

扫码关注云+社区

领取腾讯云代金券