python scrapy 案例练习

本文详细介绍了使用Python Scrapy框架爬取腾讯职位信息的过程,包括通过AJAX接口寻找翻页和数据请求URL,解析数据,利用meta传递数据,以及爬取详情页内容,并最终通过管道保存结果。

案例练习

爬取职位+翻页爬取

在这里插入图片描述
在这里插入图片描述

指向的只是数字不是url地址

在这里插入图片描述
在这里插入图片描述

页面分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ajax接口找寻——Network里面看

在这里插入图片描述
在这里插入图片描述

打开网址:

第一页:https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1622714101653&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn

在这里插入图片描述

第一页:https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1622714101653&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn

第二页 https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1622714852621&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&**pageIndex=2 **&pageSize=10&language=zh-cn&area=cn

规律是:pageIndex= 页数

在这里插入图片描述
在这里插入图片描述

创建scrapy

1. scrapy startproject xxx

在这里插入图片描述

2.scrapy genspider xxx 域名

在这里插入图片描述
在这里插入图片描述

爬虫程序文件

在这里插入图片描述

start_urls第一页

在这里插入图片描述
在这里插入图片描述

解析数据

需要找到的数据

在这里插入图片描述
在这里插入图片描述

在start文件运行

在这里插入图片描述
在这里插入图片描述

item文件:(在爬虫程序中实例化对象)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

加上翻页代码运行:

在这里插入图片描述
在这里插入图片描述

爬取详情页内容:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同样是ajax数据接口——真正的url是https://careers.tencent.com/tencentcareer/api/post/ByPostId?timestamp=1622731459890&postId=1400451451284627456&language=zh-cn

另一个url是:https://careers.tencent.com/tencentcareer/api/post/ByPostId?timestamp=1622731603080&postId=1369488632871657472&language=zh-cn

唯一不同点是postId

而postId是在每一页的数据接口你的url里

在这里插入图片描述
在这里插入图片描述

代码逻辑:

这里的two_url是占位的,需要把postId传进去才可以有完整的url

在这里插入图片描述
在这里插入图片描述

拼接url

在这里插入图片描述

这里要用到meta——数据传递,传递PostId来把parse函数获取到的postId值传给另一个爬取详情页的函数detail_content

meta = {‘item’: 需要传递共享的对象}

在这里插入图片描述

meta值传递的第一种方法——item =response.meta[‘item’]

在这里插入图片描述

meta值传递的第一种方法——item =response.meta.get(‘item’)

在这里插入图片描述

在职位详情页拿Requirement当事例,因为在职业url没有这个

在这里插入图片描述
在这里插入图片描述

结果:

在这里插入图片描述
在这里插入图片描述

结果:

在这里插入图片描述

打开管道pipline并保存

在这里插入图片描述

在爬虫文件中因为职责有\n的符号,要去掉

在这里插入图片描述

结果

在这里插入图片描述

学习Python爬虫的最佳方式之一是通过大量的实战案例来提升技能,而不仅仅是依赖理论知识。尽管目前没有广泛流传的官方“100个Python爬虫实战案例”资源,但可以通过多种途径组合学习,以达到类似效果。 ### 爬虫学习的核心技能 在学习过程中,掌握以下核心技能是关键: - **基础库的使用**:如`requests`、`BeautifulSoup`、`lxml`、`Scrapy`等,这些库是构建爬虫的基础[^1]。 - **数据解析与提取**:掌握HTML和CSS选择器,或者XPath来提取网页中的特定数据[^3]。 - **反爬虫机制的应对**:学习如何应对常见的反爬虫机制,如IP封禁、验证码、AJAX请求等[^4]。 - **数据存储**:学会将爬取到的数据保存到文件(如CSV、JSON)或数据库(如MySQL、MongoDB)中[^2]。 - **多线程与异步处理**:为了提高爬取效率,需要掌握`concurrent.futures`、`asyncio`、`aiohttp`等技术[^5]。 ### 推荐的学习资源 虽然没有单一资源提供100个完整的实战案例,但以下资源可以组合使用,帮助完成100个案例的学习目标: #### 1. **《Python网络数据采集》** 这本书详细讲解了如何使用Python进行网页爬取和数据提取,适合初学者和中级用户,涵盖多个实战案例。 #### 2. **Scrapy官方文档** Scrapy是一个功能强大的爬虫框架,其官方文档提供了丰富的示例和教程,适合深入学习并构建复杂爬虫项目。 #### 3. **GitHub开源项目** 可以在GitHub上搜索以下关键词,找到大量Python爬虫项目: - `python scrapy project examples` - `python web scraping projects` - `100 python scraping examples` #### 4. **在线课程平台** - **Coursera / edX** 提供Python爬虫相关课程,如《Python for Everybody》和《Web Scraping and API Fundamentals》。 - **Udemy** 上的《Python for Web Scraping》课程提供了多个实战项目,适合系统性学习。 #### 5. **博客与技术社区** - **掘金**、**优快云**、**知乎专栏** 等平台上有大量爬虫实战文章,许多作者会分享完整的项目代码和思路。 - **Stack Overflow** 和 **V2EX** 是解决问题的好地方,尤其是在处理反爬机制或解析复杂网页结构时。 ### 实战案例建议 以下是一些可以尝试的实战项目,帮助积累案例经验: #### 1. **爬取豆瓣电影Top250** 目标:提取电影名称、评分、导演、演员等信息,并生成可视化图表。 #### 2. **爬取知乎问题下的所有回答** 目标:分析热门话题的讨论热度,提取回答内容并进行自然语言处理。 #### 3. **抓取淘宝商品信息** 目标:根据关键词搜索商品,提取价格、销量、评论数等信息,分析商品趋势。 #### 4. **爬取招聘网站职位信息** 目标:分析不同城市的薪资水平、技能要求,为求职者提供数据支持。 #### 5. **爬取房产信息网站** 目标:分析房价走势、区域分布、户型偏好等,可用于数据可视化展示。 #### 示例代码:豆瓣电影Top250爬虫片段 ```python import requests from bs4 import BeautifulSoup url = 'https://movie.douban.com/top250' headers = { 'User-Agent': 'Mozilla/5.0' } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') movies = soup.find_all('div', class_='item') for movie in movies: rank = movie.find('em').text title = movie.find('span', class_='title').text rating = movie.find('span', class_='rating_num').text print(f'排名:{rank},电影名:{title},评分:{rating}') ``` ### 总结 通过系统性地学习Python爬虫技术,并结合大量实战案例练习,可以有效提升爬虫开发能力。建议从简单的项目开始,逐步挑战更复杂的网站结构和反爬机制。在过程中不断积累经验,最终达到掌握100个案例的目标。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值