在初学爬虫的时候,我遇到了这样一个问题:我想以安兔兔手机跑分排行为引,对安卓高端机的部分数据进行爬取,但是后来发现安兔兔排行榜中提供的链接是京东的推广小链接,直接用爬虫request不到任何有价值的数据。

像提供的链接是https://u.jd.com/yMQkt6R,但是点击去后网页url会发生变化,变成【努比亚红魔6S Pro】努比亚nubia腾讯红魔游戏手机6S Pro 18GB+512GB 氘锋透明版电竞5G手机165Hz屏幕刷新率骁龙888plus 120W快充【行情 报价 价格 评测】-京东

而真正可以爬取的部分是在浏览器跳变后的url。

那么,如何通过初始的推广链接获得京东的商品页面url呢?方法有很多,我这里提供一个比较简单的办法,通过selenium和webdriver控制浏览器,将推广链接发送给一个浏览器,然后让浏览器打开推广链接,之后浏览器内会自动进行网页的跳变,之后再将跳变后的url导出,就获得了商品页面的url。

废话不多上,上代码:


import requests
import re
import json
from bs4 import BeautifulSoup
import webbrowser
import selenium
from selenium import webdriver
import timeurl = ' https://www.antutu.com/ranking/rank1.htm'headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',}
r = requests.get(url,headers=headers)
r.encoding = "utf-8"
be = BeautifulSoup(r.text,features="lxml")print(url)
C=be.select('ul[class="list-unstyled newrank-b"] a')
name=be.select('ul[class="list-unstyled newrank-b"] a div li[class="bfirst"]')for a in range(0,4):phonename=re.findall(r'</span>(.*?)<span', str(name[a]), re.S)#手机名称#print(phonename)rankhref=C[a].get('href')#print(mobilehref)url1 = rankhref#webbrowser.get('chrome').open(url1,new=1,autoraise=True)driver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(10)driver.get(url1)time.sleep(0)url2=str(driver.current_url)phonehref=url2#print(driver.current_url)driver.quit()r1=requests.get(url2,headers=headers).textbe1 = BeautifulSoup(r1,features="lxml")cpu= re.findall(r">CPU型号:(.*?)</li>", str(be1))ram= re.findall(r">运行内存:(.*?)</li>", str(be1))rom= re.findall(r">机身存储:(.*?)</li>", str(be1))item={'手机名称':phonename,'CPU型号':cpu,'运行内存':ram,'机身存储':rom,'详情':phonehref,}print(item)#print(cpu)#print(ram)#print(rom)a=a+1
print('over') 

运行结果:

 https://www.antutu.com/ranking/rank1.htm
{'手机名称': ['黑鲨游戏手机4S Pro'], 'CPU型号': ['其他'], '运行内存': ['其他'], '机身存储': ['其他'], '详情': 'https://item.jd.com/100014455777.html?cu=true&utm_source=kong&utm_medium=tuiguang&utm_campaign=t_1000762869_&utm_term=fd33e1b4a4674eb0a9b854dd2ebad540'}
{'手机名称': ['腾讯红魔游戏手机6S Pro'], 'CPU型号': ['骁龙888'], '运行内存': ['18GB'], '机身存储': ['512GB'], '详情': 'https://item.jd.com/100013727179.html?cu=true&utm_source=kong&utm_medium=tuiguang&utm_campaign=t_1000762869_&utm_term=9379bdc87c9b41099adc57b869b013a5'}
{'手机名称': ['iQOO 8 Pro'], 'CPU型号': ['骁龙888 Plus'], '运行内存': ['12GB'], '机身存储': ['256GB'], '详情': 'https://item.jd.com/100024540640.html?cu=true&utm_source=kong&utm_medium=tuiguang&utm_campaign=t_1000762869_&utm_term=dae82f896ac94e169a8ec1766f272a3d'}
{'手机名称': ['黑鲨游戏手机4 Pro'], 'CPU型号': ['骁龙888'], '运行内存': ['12GB'], '机身存储': ['256GB'], '详情': 'https://item.jd.com/100018568412.html?cu=true&utm_source=kong&utm_medium=tuiguang&utm_campaign=t_1000762869_&utm_term=7e83737247534c95b784bee7a9291881'}
over

核心解决办法便是:

driver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(10)driver.get(url1)time.sleep(0)url2=str(driver.current_url)phonehref=url2#print(driver.current_url)driver.quit()r1=requests.get(url2,headers=headers).text

这一部分中,通过打开浏览器,然后获得跳转后的url。

我也是新手学爬虫,这个办法有很多不完美之处,但是可以解决一时的问题,后续会找更好的办法,更多相关办法还请参考站内更多关于selenium爬取动态网页的办法。

Python爬虫解决推广链接(跳转网页)的办法相关推荐

  1. python爬虫之js链接跳转抓取_Python爬虫获取页面所有URL链接过程详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  2. python爬虫解决网页重定向问题

    python爬虫解决网页重定向问题 参考文章: (1)python爬虫解决网页重定向问题 (2)https://www.cnblogs.com/zhumengke/articles/9618368.h ...

  3. Python爬虫练习笔记——爬取单个网页里的所有图片(入门)

    最近闲着,想学一下爬虫 (^-^)V --[手动比耶] 先从简单的练习开始吧~ 爬取单个网页里的所有图片,这个没有什么难点,因为不需要翻页哈哈哈哈. 我很喜欢一些文章中的配图,比如这篇,里面就会有很多 ...

  4. Python爬虫 解决异步加载问题--以爬取PEXELS图片为例

    第一次尝试爬取->[Python爬虫]爬虫实例:三种方式爬取PEXELS图片 在爬取PEXELS时,遇到了这样问题: 页面使用Ajax的异步加载技术来实现分页,所以通过request.text无 ...

  5. Python爬虫爬取-爬取某个网页的精美壁纸

    前言:学了python爬虫,那必须搞点好康的! 先导入需要用到的库 import requests from bs4 import BeautifulSoup import time 1.针对图片网, ...

  6. python爬虫网站接口的使用——将网页上的输入内容的接口转移到对应的爬虫中(通过爬虫查询相关网页的信息)

    python爬虫网站接口的使用 网站任何输入的对话框,都对应着相关的接口 找到接口对应的关键字,就可以使用爬虫输入关键字进行操作了 通过ip38网站实现爬虫查询ip归属地 登陆相关的网址,随便查询一个 ...

  7. Python爬虫 - 解决动态网页信息抓取问题

    作者:K同学啊 时间:2020年7月29日 写在前面:本文仅供参考学习之用,请勿用作其他用途. 1.嵌入式网页爬取 举例:最常见的分页式网页 这里我用天津市的信访页面来做示例,(地址:http://w ...

  8. python爬虫解决403禁止访问错误

    在python写爬虫的时候,html.getcode()会遇到403禁止访问的问题,这是网站对自动化爬虫的禁止,要解决这个问题,需要用到python的模块urllib2模块 urllib2模块是属于一 ...

  9. python爬虫解决频繁访问_爬虫遇到IP访问频率限制的解决方案

    背景: 大多数情况下,我们遇到的是访问频率限制.如果你访问太快了,网站就会认为你不是一个人.这种情况下需要设定好频率的阈值,否则有可能误伤.如果大家考过托福,或者在12306上面买过火车票,你应该会有 ...

最新文章

  1. 开源大佬面对面:InsightFace带你打造开箱即用的人脸识别系统
  2. 【 MATLAB 】Signal Processing Toolbox Functions - By Category
  3. 【Maven学习】Nexus OSS私服仓库的备份与迁移
  4. php人才招聘系统描述,基于ThinkPHP框架的人才招聘网站系统PHP源码
  5. ehcache memcache redis 三大缓存男高音
  6. Spring AOP介绍
  7. 基于状态空间模型的控制器设计
  8. 电子商务数据运营的五大应用
  9. [序列化] SerializeHelper--序列化操作帮助类 (转载)
  10. ITIL学习笔记——核心流程之:变更管理
  11. 华为网络设备SSH连接
  12. 伽卡他卡使用教程_伽卡他卡电子教室安装使用和常见问题
  13. 用百度地图进行搜索周边的建筑,医院,餐厅,学校等。
  14. 同城聚合平台v59.2.0 本地同城 同城信息 同城商家
  15. yolov3运行及保存检测视频(包括摄像头)
  16. 【中间件】RabbitMQ入门学习笔记
  17. sql牛客网题(摘选)
  18. AD域帐号批量查询锁定帐号,批量解锁域帐号
  19. grant 1.0 mysql 权限系统工作原理
  20. 【Excel基础训练】函数入门:基础操作与常用函数

热门文章

  1. 17. 权重衰退(weight_decay)
  2. 程序员课外拓展013:桌面云涉及到的概念
  3. vue3条码批量打印
  4. 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型(转载)
  5. 笔记本计算机半角数字切换,半角字符怎么输入?如何切换为-全角字符
  6. 计算机未来规划范文200,计算机职业规划书范文
  7. 微信小程序实现音乐播放器(2)
  8. 小程序短视频项目———视频展示页面开发
  9. ios 绕过 id 锁
  10. python图像处理(二)绘制函数图像