一、前言

CPA之家app推广平台是国内很大的推广平台。该网址的数据信息高达数万条,爬取该网址的信息进行数据的分析。

二、项目目的

实现将获取到的QQ,导入excel模板,并生成独立的excel文档。

三、项目分析——反爬措施处理

前期测试时发现,该网站反爬虫处理措施很多,测试到有以下几个:

1. 直接使用requests库,在不设置任何header的情况下,网站直接不返回数据。

2. 同一个ip连续访问40多次,直接封掉ip,起初我的ip就是这样被封掉的。

为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决。

1. 获取正常的 http请求头,并在requests请求时设置这些常规的http请求头。

2. 使用 fake_useragent ,产生随机的UserAgent进行访问。

四、需要的库和网址

https://www.cpajia.com/index.php?g=Wap&a=searchua

2. 需要用到的库:requests、time、lxml、ua

五、项目实现

1. 我们定义get_page方法, 准备url地址和请求头headers,导入对应的库。

import requests
import os
import re
from  fake_useragent import UserAgent
from lxml import etreehouse_dict = {} #定义一个字典
def get_page(url, page_num):pass
url = 'https://www.cpajia.com/index.php?g=Wap&a=search' #网址
ua = UserAgent(verify_ssl=False) #随机的UserAgent
kv = {'User-Agent': ua.random}pageList = get_page()

2. 下面介绍一下如何爬取ajax动态加载的网页方法。

3. 翻页时发现它的url并没有改变,无法简单的通过request.get()访问其他页面。据搜索资料,了解到这些网站是通过ajax动态加载技术实现。即可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

4. 通过分析响应请求,模拟响应参数。再通过requests库的request.post()函数去post相对应的参数即可。

具体方法如下:打开开发者工具,快捷键F12,不行就Fn + F12。

5. <1>标红的箭头network, 在其中可以看到服务器加载过来的资源。

< 2>标红的框框一个过滤器,你可以按照文件格式筛选。

6. Headers中的request method 中显示我们使用的是POST方法。而且FROM Data 中有一个参数,PageIndex。

利用Form Data 中的数据,编写一个字典,赋值给requests.post()中的data即可。

接下来就可以正常访问和翻页了!6. Headers中的request method 中显示我们使用的是POST方法。而且FROM Data 中有一个参数,PageIndex。

利用Form Data 中的数据,编写一个字典,赋值给requests.post()中的data即可。

接下来就可以正常访问和翻页了!

7. 对网站发生请求

import requests
import os
import re
from  fake_useragent import UserAgent
from lxml import etree
def get_page(url, page_num):pageList = []for i in range(1, page_num + 1):formdata = {'PageIndex': i}
ua = UserAgent(verify_ssl=False)
kv = {'User-Agent': ua.random}pageList = get_page()

8. 对请求到的数据进行处理,具体过程如下所示。

9. 用谷歌浏览器选择开发者工具或者按F12,找到相对应的QQ号的链接。

response = requests.post(url=url, data=formdata, headers=kv)html = response.content.decode('utf-8')parse_html = etree.HTML(html)page = parse_html.xpath('//div[@class="wrap"]//div[@class="list-main"]')for li in page:house_dict['项目'] = li.xpath('.//div[@class="main-top"]//b/text()')[0].strip()house_dict['QQ'] = li.xpath('.// div[ @class ="main-com"]//span//a/text()')[0].strip()#print(house_dict)

10. 将获取的信息写入excel表格

f = open('QQ号.csv', 'a', encoding='utf-8')  # 以'w'方式打开文件f.write(str(house_dict))print(house_dict)f.write("\n")# 键和值分行放,键在单数行,值在双数行f.close()

注:cvs文件会出现乱码,我们点击文件选择Excel工作薄,后缀名是xlsx;再点保存即可。

11. 输入要爬取的页数

pageList = get_page(url, 100)#页数(网址,页数)

六、效果展示

1. 点击绿色按钮运行,将结果显示在控制台,如下图所示。输入你要爬取的页数。

2. 打开Excel表格,如下图所示。

最后小结:

1. 学习requests 库的使用以及爬虫程序的编写。

2. 学习使用反爬虫技术手段,并在实际应用中应用这些技术。

3. 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

4. 希望通过这个项目,能够找到合适的平台进行推广。

5. 欢迎大家点赞,留言,转发,感谢大家的相伴与支持,需要本文源码可以关注公众号:【Python的进阶之旅】有惊喜哦!觉得不错,记得给个Star噢~

想学爬虫的同学看过来,手把手教你利用Python网络爬虫获取APP推广信息相关推荐

  1. python爬虫爬取房源_手把手教你用Python网络爬虫爬取新房数据

    项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以「惠民之家」 ...

  2. 实战|手把手教你利用Python网络爬虫获取新房数据

    一.项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以惠民之家 ...

  3. 手把手教你利用Python网络爬虫获取链家网的房产信息

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来. ...

  4. python链家网爬虫_手把手教你利用Python网络爬虫获取链家网的房产信息

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来 ...

  5. python爬虫可以爬取个人信息吗_手把手教你利用Python网络爬虫获取旅游景点信息...

    爬虫系列: 当我们出去旅游时,会看这个地方有哪些旅游景点,景点价格.开放时间.用户的评论等. 本文基于Python网络爬虫技术,以hao123旅游网为例,获取旅游景点信息. 1.项目目标 获取网站的景 ...

  6. 手把手教你使用Python网络爬虫获取B站视频选集内容(附源码)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 位卑未敢忘忧国,事定犹须待阖棺. ...

  7. 手把手教你使用Python网络爬虫获取音效信息

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 一腔热血勤珍重,洒去犹能化碧涛. ...

  8. 手把手教你用Python网络爬虫实现上海证券交易所定期报告pdf文件下载(附代码)...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 青山隐隐水迢迢, 秋尽江南草未凋. ...

  9. 手把手教你使用Python网络爬虫获取王者荣耀英雄皮肤

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 欢度国庆,共度中秋. /1 前言/ ...

最新文章

  1. poj3422(最小费用流 + 拆点)
  2. 独家 | 手把手教你运用深度学习构建视频人脸识别模型(Python实现)
  3. 【作业四】软件案例分析之必应词典
  4. Jquery.tmpl
  5. 入门前端学习路线图【送书】
  6. mongodb or and 条件拼凑 Query.And Query.Or
  7. axios post body参数_vue之axios封装
  8. 安卓rtmp推流app_同城直播电商APP小程序平台开发
  9. WAF和IPS的区别
  10. windows环境下安装wget
  11. MySQL/mariadb从删库到跑路——备份
  12. 机器学习在社会科学中的应用
  13. photoshop之小技巧
  14. Bootstrap折叠导航栏
  15. spoon链接本地的db2报错
  16. 串行通信——异步串行通信
  17. 南京工程学院计算机英语,南京工程学院是什么意思
  18. chrome 油猴 电脑或者手机click()失效,解决
  19. extra argument in call
  20. 考虑下面特殊的整数线性规划问题max求和 求和 为非负整数

热门文章

  1. 评估假设函数是否过拟合的方法
  2. 一起来写个酷炫的水波纹浪啊浪界面
  3. 文件系统——空闲块成组链接法的模拟
  4. 计算机系统(五):计算机网络和因特网
  5. [File error 17] file exists
  6. 强大的wolframalpha
  7. Python|为什么列表推导式会更快
  8. win8服务器设置虚拟机,win8系统怎么安装虚拟机 win8系统安装虚拟机的详细图文教程...
  9. 【每日早报】2019/08/16
  10. 南京邮电大学网络攻防训练平台-密码学-异性相吸