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相关推荐

  1. 代理的基本原理 及用Xpath爬取代理网站IP列表 测试并存入数据库

    前言 在网络爬虫中,有些网站会设置反爬虫措施,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,例如 403 Forbidden,"您的IP ...

  2. 利用代理IP爬取京东网站手机数据

    1.代理简介 在爬虫过程中如果经常用自己的IP进行爬虫会出现IP被封的可能,这就要用到代理技术,通过爬取代理网站的IP地址,每次爬取页面就随机选择一个IP地址进行爬取,这样就会降低IP被封的可能性. ...

  3. 基于Scarpy爬取Shopee网站商品数据

    一.实现的主要功能: 1.基于Scarpy框架爬取Shopee网站马来西亚站点商品数据,包括商品url,最低价.最高价.销量.商品图片url.店铺名称.店铺开通时间: 2.针对反爬,获取免费ip代理网 ...

  4. python网络爬虫_Python网络爬虫——爬取视频网站源视频!

    原标题:Python网络爬虫--爬取视频网站源视频! 学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 ...

  5. Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘

    更多详情请查看Honker Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘 给大家推荐一款超好用的壁纸下载网站-- wallhaven 第一次知道这个网站的时候,惊为天 ...

  6. python爬取电影网站存储于数据库_Python零基础爬虫教程(实战案例爬取电影网站资源链接)...

    前言 好像没法添加链接,文中的链接只能复制到浏览器查看了 这篇是我写在csdn的,那里代码格式支持更好,文章链接 https://blog.csdn.net/d497465762/article/de ...

  7. python爬网站的题库_Python零基础爬虫教程(实战案例爬取电影网站资源链接)

    前言 好像没法添加链接,文中的链接只能复制到浏览器查看了 这篇是我写在csdn的,那里代码格式支持更好,文章链接 https://blog.csdn.net/d497465762/article/de ...

  8. Scrapy从入门到精通(4)--项目实战爬取图书网站信息

    项目实战 url = http://books.toscrape.com 页面分析 scrapy shell U R L> scrapy shell URL>可以使用户在交互式命令行下操作 ...

  9. Python爬取小说网站总推荐排行榜所有小说~

    文章目录 前言 一.相关环境配置 二.使用步骤 1.引入库 2.获取网页数据 3.解析数据 4.保存数据 总结 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时 ...

最新文章

  1. Windows10上编译MXNet源码操作步骤(Python)
  2. hadoop完全分布式
  3. pandas loc()与iloc用法
  4. linux/centos 解决Tomcat内存溢出,centostomcat
  5. PHP查看PECL模块包含的函数
  6. 【解决办法】pandas画出时序数据(股票数据)横轴不是时间
  7. 关于Spring的构造函数,init-method,和依赖注入的先后顺序
  8. conda deactivate python3_python3的配置解决
  9. 阿里P7大牛亲自教你!BAT这种大厂履历意味着什么?积累总结
  10. qt connect函数_Qt官方示例广播发送器
  11. test1 exam5定义一个可以精确表示年、月、日、小时、分、秒的结构体
  12. 精度、速度完美平衡,最新图像分割SOTA模型重磅发布!!!
  13. 豆丁网文档免登陆免积分下载工具原理分析
  14. 基于VRML的虚拟校园漫游系统
  15. 不联网安装 SQL server 2012 的问题
  16. 同济大学计算机系拿奖学分绩点,同济大学绩点换算(同济大学绩点多少算高)
  17. c1科目三灯光全语言播报,驾照科目三灯光模拟考试语音提示
  18. 马斯克与SEC再次寻求法庭延长期限 以解决马斯克使用推特纷争
  19. 电视机体感游戏大盘点
  20. AI公司进入倒闭潮,5种公司最易“被倒闭”?(下)

热门文章

  1. window10如何重命名系统用户文件夹
  2. hdu 6053 TrickGCD
  3. Strange Printer
  4. 搜狗皮肤 php,搜狗皮肤PHP怎样运用 搜狗输入法皮肤PHP运用办法
  5. 科技计算机作文200字,关于网络的作文200字(5篇)
  6. micro、M3O微服务系列(一)
  7. 错误代码0x80004005解决方案
  8. 新买的电脑,自带最新版的office家庭和学生版,激活教程
  9. php类与对象听不明白,PHP类与对象使用---技巧总结
  10. 手游图片素材提取_如果你想获得心爱手游中的图片素材,可以试试这款软件!...