爬取 goubanjia 网站的免费 ip 免费 proxy JavaScript + Python + selenium
url: http://www.goubanjia.com/
1. 分析页面:
根据结构,不难想象这是一个表格,如果通过页面去获取数据应该不难,但是通过检查发现,并不是想象中的那样(div, span, p层次不齐)
第一个没有多余的字符,好像可以直接获取,但是再看第二个
会发现,中间掺杂一些其他的标签,以及无用的信息,也许看到这里,新手这就犯难了,不要急,接下来继续.
我的解决方法是使用js,简单粗暴(你可尝试在控制台输入以下代码,可以直接打印出来)
通过css定位是表示 .ip
ip = document.querySelectorAll('.ip')
这个css查找返回一个数组(python 就当列表处理吧,但是这是js的对象),一共20行数据
获取第一个先:
ip[0]
那么如何获取字符串呢?
通过细心观察,有用的信息都是存储在div标签和span标签,p标签基本没用(display:none)
展开就是:
ip[0].querySelectorAll('div, span')
获取单个值的方法(用变量转换一下)
tag = ip[0].querySelectorAll('div, span')
tag[2].innerHTML
一个td标签里面的值的获取 (javascript箭头函数)
tag.forEach((item, index)=>console.log(item))
或者是直接获取到值(获取的数字的 左边的数字表示是重复打印)
tag.forEach((item, index)=>console.log(item.innerText))
使用tag.forEach((item, index)=>console.log(item.innerHtml)) 是返回undefined
这样基本就完成了,之后再把这些数据拼接起来即可
2. 根据分析编写代码
整理一下,代码如下,在控制台可以直接看到想要的数据
/*
* 分析结果 :
* let ip = document.querySelectorAll('.ip')
* let data = ip[i].querySelectorAll('span, div').innerHTML
* */
let ip, tag, singData, result
ip = document.querySelectorAll('.ip') //array
for (let i = 0; i < ip.length; i++) {result = '' //重置可变参数resulttag = ip[i].querySelectorAll('span, div')for (let j = 0; j < tag.length; j++) {singData = tag[j].innerHTMLresult += singData}result = result.replace(result.slice(-4), ':' + result.slice(-4))console.log(result)
}
刷新后又变了…
如果要包含表部信息的话,好像更简单除暴
let ip, result
ip = document.querySelectorAll('.ip') //array
for (let i = 0; i < ip.length; i++) {result = '' //重置可变参数result// 如果要获取表头所有的信息result = ip[i].parentElement.innerTextconsole.log(result)
}
哦,好吧,忙活了半天,我没有注意到的是innerHtml获取的元素不包含display: none
的信息,不过也不怎么影响
打印出来的数据也是直接可以直接复制使用的
110.243.14.136:8362
VM78208:11 123.101.237.17:8711
VM78208:11 36.248.132.13:8663
VM78208:11 27.43.186.17:8272
VM78208:11 27.43.190.137:8313
VM78208:11 163.204.242.93:8283
VM78208:11 113.195.16.143:8429
VM78208:11 183.166.70.76:8714
VM78208:11 36.249.52.14:8318
VM78208:11 175.44.109.183:8087
VM78208:11 183.166.97.111:8258
VM78208:11 1.198.73.70:8981
VM78208:11 118.112.194.169:8460
VM78208:11 171.11.179.220:8348
VM78208:11 113.128.28.52:8411
VM78208:11 112.105.11.196:8744
VM78208:11 36.57.87.188:8335
VM78208:11 123.55.102.88:8140
VM78208:11 171.35.174.9:8321
VM78208:11 180.121.129.131:8844
好吧,为了方便加一段语句吧(在控制台运行即可直接拿到页面数据)
let ip, tag, result, ipCommon = []
ip = document.querySelectorAll('.ip') //array
for (let i = 0; i < ip.length; i++) {result = '' //重置可变参数resulttag = ip[i].querySelectorAll('span, div')for (let j = 0; j < tag.length; j++) {result += tag[j].innerHTML //一个多余的变量}result = result.replace(result.slice(-4), ':' + result.slice(-4))ipCommon.push(result)
}
console.log(ipCommon)
获取到的结果
直接复制出来用
["110.243.14.136:8362", "123.101.237.17:8711", "36.248.132.13:8663", "27.43.186.17:8272","27.43.190.137:8313", "163.204.242.93:8283", "113.195.16.143:8429", "183.166.70.76:8714","36.249.52.14:8318", "175.44.109.183:8087", "183.166.97.111:8258", "1.198.73.70:8981","118.112.194.169:8460", "171.11.179.220:8348", "113.128.28.52:8411", "112.105.11.196:8744","36.57.87.188:8335", "123.55.102.88:8140", "171.35.174.9:8321", "180.121.129.131:8844"]
核心思想就是这样
3. 代码封装,测试
Python的话如果是用webdriver爬取数据,应该是执行driver.exec_script(js)
然后获取js的返回值。这个方法不会请参考 :
获取Selenium中Javascript代码的返回值
为了方便调用把console.log换成return
我的目录
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 13/08/20 下午5:16
# @Author : Xander
# @Site :
# @File : get_ip.py
# @Software: IntelliJ IDEA 2020.1.1import selenium.webdriver
driver = selenium.webdriver.Chrome()
driver.get('http://www.goubanjia.com/')
driver.implicitly_wait(5)with open('get_tab_data.js', 'r') as js:ip_table = driver.execute_script(js.read() + ' return getIp()')print(ip_table)
driver.close()
使用Ubuntu 运行实测不超过5秒即可获取到数据
爬取 goubanjia 网站的免费 ip 免费 proxy JavaScript + Python + selenium相关推荐
- 代理的基本原理 及用Xpath爬取代理网站IP列表 测试并存入数据库
前言 在网络爬虫中,有些网站会设置反爬虫措施,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,例如 403 Forbidden,"您的IP ...
- 利用代理IP爬取京东网站手机数据
1.代理简介 在爬虫过程中如果经常用自己的IP进行爬虫会出现IP被封的可能,这就要用到代理技术,通过爬取代理网站的IP地址,每次爬取页面就随机选择一个IP地址进行爬取,这样就会降低IP被封的可能性. ...
- 基于Scarpy爬取Shopee网站商品数据
一.实现的主要功能: 1.基于Scarpy框架爬取Shopee网站马来西亚站点商品数据,包括商品url,最低价.最高价.销量.商品图片url.店铺名称.店铺开通时间: 2.针对反爬,获取免费ip代理网 ...
- python网络爬虫_Python网络爬虫——爬取视频网站源视频!
原标题:Python网络爬虫--爬取视频网站源视频! 学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 ...
- Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘
更多详情请查看Honker Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘 给大家推荐一款超好用的壁纸下载网站-- wallhaven 第一次知道这个网站的时候,惊为天 ...
- python爬取电影网站存储于数据库_Python零基础爬虫教程(实战案例爬取电影网站资源链接)...
前言 好像没法添加链接,文中的链接只能复制到浏览器查看了 这篇是我写在csdn的,那里代码格式支持更好,文章链接 https://blog.csdn.net/d497465762/article/de ...
- python爬网站的题库_Python零基础爬虫教程(实战案例爬取电影网站资源链接)
前言 好像没法添加链接,文中的链接只能复制到浏览器查看了 这篇是我写在csdn的,那里代码格式支持更好,文章链接 https://blog.csdn.net/d497465762/article/de ...
- Scrapy从入门到精通(4)--项目实战爬取图书网站信息
项目实战 url = http://books.toscrape.com 页面分析 scrapy shell U R L> scrapy shell URL>可以使用户在交互式命令行下操作 ...
- Python爬取小说网站总推荐排行榜所有小说~
文章目录 前言 一.相关环境配置 二.使用步骤 1.引入库 2.获取网页数据 3.解析数据 4.保存数据 总结 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时 ...
最新文章
- Windows10上编译MXNet源码操作步骤(Python)
- hadoop完全分布式
- pandas loc()与iloc用法
- linux/centos 解决Tomcat内存溢出,centostomcat
- PHP查看PECL模块包含的函数
- 【解决办法】pandas画出时序数据(股票数据)横轴不是时间
- 关于Spring的构造函数,init-method,和依赖注入的先后顺序
- conda deactivate python3_python3的配置解决
- 阿里P7大牛亲自教你!BAT这种大厂履历意味着什么?积累总结
- qt connect函数_Qt官方示例广播发送器
- test1 exam5定义一个可以精确表示年、月、日、小时、分、秒的结构体
- 精度、速度完美平衡,最新图像分割SOTA模型重磅发布!!!
- 豆丁网文档免登陆免积分下载工具原理分析
- 基于VRML的虚拟校园漫游系统
- 不联网安装 SQL server 2012 的问题
- 同济大学计算机系拿奖学分绩点,同济大学绩点换算(同济大学绩点多少算高)
- c1科目三灯光全语言播报,驾照科目三灯光模拟考试语音提示
- 马斯克与SEC再次寻求法庭延长期限 以解决马斯克使用推特纷争
- 电视机体感游戏大盘点
- AI公司进入倒闭潮,5种公司最易“被倒闭”?(下)
热门文章
- window10如何重命名系统用户文件夹
- hdu 6053 TrickGCD
- Strange Printer
- 搜狗皮肤 php,搜狗皮肤PHP怎样运用 搜狗输入法皮肤PHP运用办法
- 科技计算机作文200字,关于网络的作文200字(5篇)
- micro、M3O微服务系列(一)
- 错误代码0x80004005解决方案
- 新买的电脑,自带最新版的office家庭和学生版,激活教程
- php类与对象听不明白,PHP类与对象使用---技巧总结
- 手游图片素材提取_如果你想获得心爱手游中的图片素材,可以试试这款软件!...