python requests和response

2020年5月21号, 和往常一样,都只是普通的一天,但是今天碰到了一个事情:很多时候我们写完爬虫,都是为了抓取数据给到别人,但是如果这个数据是需要实时更新的,那怎么办? 岂不是自己天天抓取完,再把数据给到他人。这样子其实很麻烦。于是,我就开始着手如何把python项目打包成exe文件。

于是我就上了pyinstaller, 按照网上的教程把scrapy工程导出成exe, 但是导出完成之后, 发现在我的电脑上运行是OK的,但是其他人的电脑上不行。然后作为小白的自己不知道该何去何从,scrapy是我自己用的最顺手的爬虫工具。可是涉及到的文件确实很多,打包的话也容易出问题。

自己公司电脑正常运行

打包完成之后的部分文件,文件还是比较多的。

打包完成之后的文件 

其他人的电脑运行结果:

在个人电脑的运行结果

自己暂时没有想到如何去修改,于是就想着如果不是用scrapy写程序呢?打包的话是不是比较简单。于是自己没有用scrapy,用的是python自带的requests重写了爬虫的代码.

由于自己之前一直用的scrapy, 习惯了那个框架,现在出来之后开始写,还是挺不习惯的。最难的部分是以前自己一直在scrapy中一直用XPATH来解析response中的内容并提取,可以说是非常熟练,现在突然换回来,一下子不知道该如何处理。

于是自己就去网上看了别人的方法,发现其实也是可以用xpath的,这个模块叫做lxml。

导入lxml
xpath解析response

在scrapy里面, xpath的使用方法是

value = response.xpath("//表达式").extract()

不使用scrapy的时候, 其实是分成了两步:

1)获取网页的源代码, 处理成节点, 也就是 r = etree.HTML(response.text)

2)第二步是对处理后的r使用xpath,方法是value = r.xpath("//表达式")

是没有extract()这个方法的.

依靠着lxml,延续了自己使用xpath快速查找内容的方法。最终完成了爬虫的编写。并且在最后打包成exe的时候,只生成了一个文件,同时可以在其他人的电脑上顺利运行。


打包结果

由于过去的一年多,自己频繁使用了scrapy,现在上手request和response觉得难度不大,很多地方都是相似的。scrapy是一个高级版本,框架完善。但是基本的requests却给了我更多的灵活性。以前使用scrapy, 要编写setting, item, 爬虫文件等等. 现在只需要一个py文件就可以完成了. 相信之后自己会使用requests和selenium来完成自己更多的爬虫项目.

selenium: 优势在于爬虫过程中如果需要登录验证的话,scrapy和requests往往步骤繁多,验证起来很困难。selenium就是操作浏览器,没有这方面的顾虑,特别是一些网站反爬虫特别厉害的,使用selenium虽然效率低,但是能解决大部分验证和反爬虫的问题。

Scrapy:完善的爬虫框架,适合新手使用,框架已经弄好。按照这个框架填写自己想要的内容,可以在前期让自己专注于代码的编写和纠错。性能也很强大,效率高,一直很喜欢它。适合大的项目。

requests:适合小项目,灵活性高。

目前,本人是三者都使用,根据不同的目标选择不同的方案。

你可能感兴趣的:(python requests和response)