当前位置: 首页 > 网络应用技术

Python爬行对淘宝产品的产品信息并生成Excel

时间:2023-03-07 19:05:52 网络应用技术

  背景中有许多小型合作伙伴向我询问有关Python爬行动物的知识和学习资源。今天,本文简要介绍了Python Crawlers的知识点,并将Taobao.com的产品信息爬到Excel表中进行演示。本文的源代码将同步到Github,欢迎下载和使用。

  在爬车手之前,您需要了解有关爬虫者的一些基本知识。

  首先,我们需要了解爬虫的基本原理:

  基本网页请求的过程可以分为以下两个步骤:

  1.请求(请求):用户前面显示的每个网页都必须通过此步骤,也就是说,向服务器发送访问请求。

  2.响应:收到用户的请求后,服务器将验证请求的有效性,然后将响应发送给用户(客户端)。),如下所示。

  网页请求的方法也分为两种类型:

  1.获取:最常见的方法通常用于获取或查询资源信息。这也是大多数网站使用的方法。响应速度很快。

  2.帖子:与GET方法相比,以形式的形式上传参数的功能,因此除了查询信息外,您还可以修改信息。

  因此,在编写爬网之前,我们必须首先确定谁发送请求以及使用了什么方法。

  要发送请求,我们需要了解请求的URL地址。以淘宝眼镜的URL为例:

  眼镜中国人在这里转移:

  在这里,我们只需要知道Q背后的值是我们搜索的产品的名称。背面的其他参数对我们暂时没有用。

  因为爬行动物不仅攀登一页的信息,因此我们跳到下一页:

  可以发现s = 44*(第1页)的值。

  然后CTRL+U组合密钥打开源代码。您可以找到G_PAGE_CONFIG的JSON字符串。内部的数据值如下:

  这是FostFeetext是运输成本,RAW_TITLE是标题,而PIC_URL是图片的地址。

  View_price:货运;货运;

  尼克:商店的名字;

  item_loc:地址;地址;

  View_sales:销售。

  以下数据对应以下信息:

  请求方法可以是F12,然后网络--->标题--->请求方法:

  在了解上面的基本内容之后,我们可以编写一个小的爬行者,例如以下代码:

  这样,以HTML格式获得页面的内容并显示。

  请求库使用到langle库使用的语句是导入+库的名称。在上述过程中,加载请求库的说明是:

  要通过GET获得数据,您需要在请求库中调用GET方法。使用方法是在请求之后输入英文点号,如下所示:

  将获得的数据保存在strhtml变量中,代码如下:

  目前,strhtml是一个URL对象,代表整个网页,但目前仅需要网页中的源代码。以下句子指示Web源代码:

  接下来,我们完整的攀登信息,主要的攀登信息是:产品名称,商店名称,价格,区域和付款人数量。

  首先,我们定义函数的URL以获取请求:

  然后定义一个函数以获取HTML页面:

  然后定义一个函数以获取产品的信息并插入Excel:

  首先介绍一个RE库:

  RE库是Python的标准库

  原始字符串类型以正则表达式表示,指示:r'test'

  RAW String是一个不包含旋转符号的字符串。

  RE库的主要函数如下:

  在这里,我们使用Findall()函数来提取信息,例如:

  主要功能如下:

  最后运行程序:

  以上是如何使用Python爬Toobao信息的内容。所有代码如下:

  最后,让我们谈谈爬行者的合法性。几乎每个网站都有一个名为robots.txt的文档。当然,有些网站尚未设置robots.txt.为未设置robots.txt的网站,您可以通过网络crawler获取密码加密的数据,也就是说,网站的所有页面数据都可以爬网。如果网站有robots.txt文档,有必要确定是否有数据禁止访问者获取。

  您可以看到百度可以允许一些爬行动物进入一些路径,对于不允许的用户,他们都禁止爬行。代码如下:

  该代码意味着允许其他爬行动物爬网,除了先前指定的爬行动物。

  因此,最好遵守网站的规则和合法性。

  然后,许多网站实际上具有反爬行机制。在最终分析中,爬行者实际上被代码用于模拟人类的浏览访问并进行数据批次爬网。因此,当捕获的数据量逐渐增加时,它将造成很多压力在Access服务器上,甚至可能崩溃,因此许多网站将采用一些反捕获策略。

  服务器如何识别它是否是爬网?第一个更多的主要反填充机制是通过检查连接的用户来识别它是浏览器访问还是代码访问。如果是代码访问,则当访问数量增加时,它是代码访问,服务器将直接密封访问的IP。

  如前所述,我们可以找到诸如URL,表单数据,请求标头之类的信息,以及识别浏览器访问的方法是确定关键字是否是请求标题下的用户代理。设备的请求标题。

  因此,我们只需要构造此请求标题的参数。创建请求头信息,代码如下:

  我们需要知道,访问爬虫的频率非常快。我们可能会看到一秒钟的图片,并且代码可以在一秒钟内爬行数千张图片。安蒂(Anti -Climbing),因此第二个反捕集机制是我们的常见验证代码。它是计算每个IP的访问频率,如果频率超过设定阈值,则将返回验证代码。如果它确实是用户访问权限,则用户将填写,然后继续访问。将被阻止。

  目前,我们有两个解决方案:第一种方法是常用的延迟,例如每5秒抓住一次,代码如下:

  但是这种方法将导致crawler效率的降低。然后第二个解决方案是设置代理IP。请求还具有相应的代理属性。

  首先,构建自己的代理IP池,以字典的形式分配给代理,然后将其传输到请求。代码如下:

  最后,可以将爬行者作为一种技能和兴趣学习,并且不使用爬行动物来通过非法网站进行一些非法行为。

  此外,所有实际文章的源代码都将同步到GitHub。欢迎下载并在必要时使用。

  本文的源代码地址:https://github.com/jiangxia-1024/python-workspace.git

  微信公共帐户: