【python爬虫】闲鱼爬虫,可以爬取商品

目录

前言

一、介绍

二、爬虫流程

1. 确定关键词并构造URL

2. 发送网络请求

3. 解析HTML并提取数据

4. 保存数据

三、使用代理IP

四、完整代码

五、总结


前言

闲鱼是一个很受欢迎的二手交易平台,但是由于没有开放API,我们需要使用爬虫来获取数据。本文将介绍如何使用Python爬虫爬取闲鱼上的商品信息,包括构造URL、发送网络请求、解析HTML并提取数据以及使用代理IP来进行爬取。如果您需要抓取闲鱼的其他数据,本文也提供了一些参考。

一、介绍

随着电子商务的兴起,二手交易平台也变得越来越受欢迎。作为淘宝旗下的二手交易平台,闲鱼的日活跃用户已经超过了1亿。因此,对于一些商家和买家来说,闲鱼是一个极具吸引力的平台。

对于我们开发者来说,有时候我们需要从闲鱼上抓取一些数据,比如价格走势,热门商品,关键词排名等等。但是,闲鱼并没有开放API,这就需要我们使用爬虫来获取数据。

本文将详细介绍如何使用Python爬虫爬取闲鱼上的商品信息。我们将主要使用requests库和BeautifulSoup库来完成这个任务。此外,为了避免被闲鱼封禁IP地址,我们还将使用代理IP来进行爬取。

二、爬虫流程

要完成我们的闲鱼爬虫,我们需要掌握以下几个步骤:

1. 确定关键词并构造URL

在爬取闲鱼数据之前,首先我们需要确定要搜索的关键词。这个关键词可以是任何你想要的内容,比如“二手手机”、“二手电脑”等等。

根据我们选择的关键词,我们需要构造一个URL,即闲鱼商品搜索的URL。URL的构造方法如下:

url = "https://2.taobao.com/search/index.htm?q={}&search_type=item&app=shopsearch".format(keyword)

其中,keyword为我们选择的关键词。

2. 发送网络请求

我们使用requests库来发送网络请求:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'}
response = requests.get(url, headers=headers)

在发送请求之前,我们需要设置请求头。这个请求头包含了我们浏览器的信息,这样可以避免被服务器轻易识别为爬虫。

3. 解析HTML并提取数据

我们使用BeautifulSoup库来解析HTML并提取数据:

soup = BeautifulSoup(response.text, 'html.parser')
goods_list = soup.find_all('div', {'class': 'J_MouserOnverReq'})

解析完HTML之后,我们需要找出包含商品信息的标签。我们可以通过查看闲鱼网页的源代码,找到所有商品信息都被包含在一个class为“J_MouserOnverReq”的div中。

4. 保存数据

最后一步,我们需要将爬取到的数据保存下来。这里我们使用csv库将数据保存到csv文件中。

with open('goods_info.csv', 'w', newline='') as f:writer = csv.writer(f)writer.writerow(['商品名称', '商品价格', '商品链接'])for goods in goods_list:title = goods.find('p', {'class': 'item-title'}).text.strip()price = goods.find('p', {'class': 'price'}).text.strip()link = goods.find('a', {'class': 'item-link'}).get('href')writer.writerow([title, price, link])

通过使用以上四个步骤,我们可以完成闲鱼商品信息的爬虫。

三、使用代理IP

由于频繁的发送网络请求会使服务器怀疑我们是爬虫,并且封禁我们的IP地址,所以我们需要使用代理IP来隐藏我们的真实IP地址。

我们可以从代理IP网站上获取代理IP。这里我们使用站大爷的API,可以通过以下的代码来获取代理IP:

def get_proxies():response = requests.get("http://ip.zdaye.com/dayProxy.html")soup = BeautifulSoup(response.text, 'html.parser')trs = soup.find_all('tr')proxies = []for tr in trs[1:]:tds = tr.find_all('td')ip = tds[0].text.strip()port = tds[1].text.strip()protocol = tds[3].text.strip().lower()proxies.append("{}://{}:{}".format(protocol, ip, port))return proxies

该函数会返回一个代理IP池。

我们可以在发送网络请求的时候使用代理IP,代码如下:

proxies = {"http": random.choice(get_proxies()),"https": random.choice(get_proxies())
}response = requests.get(url, headers=headers, proxies=proxies)

在构造requests对象的时候,我们传入proxies参数,代表我们使用一个代理IP来发送网络请求。

四、完整代码

import csv
import random
import requests
from bs4 import BeautifulSoupdef get_proxies():"""获取代理IP"""response = requests.get("http://ip.zdaye.com/dayProxy.html")soup = BeautifulSoup(response.text, 'html.parser')trs = soup.find_all('tr')proxies = []for tr in trs[1:]:tds = tr.find_all('td')ip = tds[0].text.strip()port = tds[1].text.strip()protocol = tds[3].text.strip().lower()proxies.append("{}://{}:{}".format(protocol, ip, port))return proxiesdef get_goods_info(keyword):"""爬取商品信息"""url = "https://2.taobao.com/search/index.htm?q={}&search_type=item&app=shopsearch".format(keyword)headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/58.0.3029.96 Safari/537.36'}proxies = {"http": random.choice(get_proxies()),"https": random.choice(get_proxies())}response = requests.get(url, headers=headers, proxies=proxies)soup = BeautifulSoup(response.text, 'html.parser')goods_list = soup.find_all('div', {'class': 'J_MouserOnverReq'})with open('goods_info.csv', 'w', newline='') as f:writer = csv.writer(f)writer.writerow(['商品名称', '商品价格', '商品链接'])for goods in goods_list:title = goods.find('p', {'class': 'item-title'}).text.strip()price = goods.find('p', {'class': 'price'}).text.strip()link = goods.find('a', {'class': 'item-link'}).get('href')writer.writerow([title, price, link])if __name__ == '__main__':get_goods_info('二手手机')

五、总结

本文介绍了如何使用Python爬虫爬取闲鱼上的商品信息,并且使用代理IP防止被封禁IP地址。如果您还需要爬取其他数据,比如评论、店铺信息等等,您可以根据本文提到的方法进行尝试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150631.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ELK 处理 Spring Boot 日志

ELK 处理 Spring Boot 日志,妙啊! 来源:ibm.com/developerworks/cn/java /build-elk-and-use-it-for-springboot -and-nginx/index.html ELK 简介 Logstash Elasticsearch Kibana ELK 实现方案 ELK 平台搭建 安装 Logstash 安装 Elas…

揭开黑客的神秘面纱:黑客文化、技术手段与防御策略

目录 1. 引言1.1 黑客的定义与起源1.2 黑客文化的形成与传承 2. 黑客的分类与目标2.1 道德黑客与恶意黑客2.2 黑客攻击的目标与动机解析 3. 黑客的技术手段3.1 网络入侵与渗透测试3.2 社会工程学与钓鱼攻击3.3 恶意软件与病毒传播3.4 数据泄露与身份盗窃 4. 防御黑客攻击的策略…

网络基础知识面试题2

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)

学生信息管理-数据库版

前置条件 创建student表并添加示例数据 功能要求 代码实现 import java.sql.*; import java.util.Scanner;public class Main {// 加载驱动public final static String driver"com.mysql.cj.jdbc.Driver";public final static String url"jdbc:mysql://local…

C# 给某个方法设定执行超时时间

C# 给某个方法设定执行超时时间在某些情况下(例如通过网络访问数据),常常不希望程序卡住而占用太多时间以至于造成界面假死。 在这时、我们可以通过Thread、Thread Invoke(UI)或者是 delegate.BeginInvoke 来避免界面假死, 但是…

SuperMap:开启地理信息的无限可能

文章目录 引言简介SuperMapSuperMap的背景和发展SuperMap的功能特点 SuperMap的应用案例城市规划与管理天气预报与灾害管理物流与运输管理地理信息服务 最佳实践与技巧数据准备与处理地图制作与展示空间分析与决策 展望未来结论 引言 随着现代社会的发展,地理信息系…

slamplay:用C++实现的SLAM工具集

0. 项目简介 slamplay 是一个功能强大的工具集合,可用于开始使用 C 来玩和试验 SLAM。这是一项正在进行的工作。它在单个 cmake 框架中安装并提供一些最重要的功能 后端框架(g2o、gtsam、ceres、se-sync 等)、 前端工具(opencv、…

【Luckfox pico入门记录(一)】开发环境与工具链

写在前面 最近刷bilibili发现微雪电子关于luckyfox pico的介绍视频,感叹linux开发板居然可以把价格缩到100RMB以内,也正巧结束了复旦微比赛,受够了FM33LC046N的低性能,来玩点便宜又高性能的板子。   开发板型号:luck…

Jmeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量,相比于并发模式,更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS,我们可以把他理解为我们的TPS,我们就不…

RPC分布式网络通信框架项目

文章目录 对比单机聊天服务器、集群聊天服务器以及分布式聊天服务器RPC通信原理使用Protobuf做数据的序列化,相比较于json,有哪些优点?环境配置使用项目代码工程目录vscode远程开发Linux项目muduo网络库编程示例CMake构建项目集成编译环境Lin…

【MVC】C# MVC基础知识点、原理以及容器和管道

给自己一个目标,然后坚持一段时间,总会有收获和感悟! 国庆假期马上结束,闲暇时间,重温一遍C#关于MVC的技术,控制器、视图、模型,知识点和原理,小伙伴们还记得吗 目录 一、MVC知识点1…

linux常见命令以及jdk,tomcat环境搭建

目录 Is pwd cd touch cat echo vim 复制粘贴 mkdir rm cp jdk部署 1. yum list | grep jdk进行查找​编辑 2.安装​编辑 3.再次确认 4.判断是否安装成功 tomcat安装 1.下载压缩包,把压缩包上传至linux(可能需要yum install lrzsz) 2.解压缩unzip 压缩包名&…

asp.net闲置物品购物网系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net闲置物品购物网系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语 言开发 asp.net 闲置物品购物网 二、功…

Trie树(字典树)C++详解

字典树的定义 字典树是一个用来快速查找和存储字符串集合的数据结构。 字典树的形状 假设我们字典树里有以下5个单词: akio,akno,cspj,csps,trie 那么字典树长这样: trie 的结构非常好懂,我们…

013-第二代上位机开发环境搭建

第二代上位机开发环境搭建 文章目录 第二代上位机开发环境搭建项目介绍虚拟机安装Debian 10文件传输远程调试VNCrsync下载安装验证 配置远程调试环境配置远程设备配置 kitsCompilers配置Qtversions配置kits 测试 总结一下 关键字: Qt、 Qml、 关键字3、 关键字4…

一个月软考信息安全工程师考前攻略!

一、考试报名时间 信安考试一年就一次,11月4日考试。千万别错过考试哦!也别太紧张! 二、考试科目设置 (1)网络信息安全基础知识和技术,考试时间为150分钟,笔试,选择题; (2)网络信息安全工程与…

对干扰SAY NO!GNSS模拟将提供伽利略OS-NMA功能(一)

新一代卫星应用程序依赖灵活且准确的GNSS信号作为许多关键项目的重点要素,以确保高精度的定位、导航和授时(PNT)数据。虹科Safran提供了GNSS仿真测试解决方案,旨在确保复杂GNSS应用系统的高性能、高弹性和高准确性。 现状 GNSS技…

【网络安全---XSS漏洞(1)】XSS漏洞原理,产生原因,以及XSS漏洞的分类。附带案例和payload让你快速学习XSS漏洞

一,什么是XSS漏洞? XSS全称(Cross Site Scripting)跨站脚本攻击,为了避免和CSS层叠样式表名称冲突,所以改为了XSS,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 2013/2017年…

发布以太坊测试网络中的第一笔交易

1.安装以太坊钱包 要想发送发布以太坊测试网络中的第一笔交易,首先需要创建一个管理账户的钱包,这个钱包可以理解为管理私钥的容器,具体按照步骤为:打开Chrome浏览器应用商店搜索MetaMask,选择对应的钱包添加至Chrome…

实时选品系统实现的难点

实时选品系统是一个涉及到多个领域的复杂系统,需要兼顾数据挖掘和分析、推荐算法、机器学习、大数据处理等多方面的技术,才能实现高效、准确和可扩展的功能。 以下是实现实时选品系统时可能遇到的难点: 数据量大:实时选品系统需要…