使用selenium爬取百合网
今天在公司又听同事说到相亲的事,然后想爬取上海的用户信息看看,
先查看了一下电脑版的百合网,发现必须要登录,数据一次性只能拿取6-8条,然后在查看手机端,也是必须要登录,数据通过拿取json文件,可以一次性GET方式拿取100条,还可以通过设置参数,设置筛选条件,所以决定使用手机端来爬
先用scrapy简单的尝试,发现数据和自己设置的条件是不一样的,检测过后,发现是假数据!!!想了一会,要使用scrapy比较麻烦,最后使用selenium 加PhantomJS来完成数据爬取,然后存到mongodb数据库
from selenium import webdriver
import pymongo
import json
import time
import re
class Xiangq(object):
def __init__(self):
self.client = pymongo.MongoClient("localhost", 27017)
# 获得数据库test1
self.db = self.client.baihe
# 获得集合stu
self.stu = self.db.baihe
# 调用环境变量指定的PhantomJS浏览器创建浏览器对象
# driver = webdriver.PhantomJS()
# /home/python/Desktop/chromdriver
#self.lis= ["cityChn","provinceChn","headPhotoUrl","age","gender","height","userID","isCreditedById5","identitySign","nickname","education","educationChn","isCreditedByMobile","incomeChn","income","housing","car","photosNumber","familyDescription","prefer","headPhotoUrl_100_100","headPhotoUrl_120_150"]
driver = webdriver.Chrome(executable_path='/home/python/Desktop/chromdriver/chromedriver')
driver.get("http://i.baihe.com/#ctrl=register&act=login")
time.sleep(5)
# 登录帐号
driver.find_element_by_id("vLoginTxtAcc").send_keys('帐号')
driver.find_element_by_id("vLoginTxtPwd").send_keys('密码')
driver.find_element_by_id("vLoginDoLogin").click()
# action.sendKeys(Keys.ENTER).perform();
# driver.get("")
time.sleep(0.5)
window_1 = driver.current_window_handle
js = 'window.open();'
driver.execute_script(js)
# print(driver.page_source)
windows = driver.window_handles
for handle in windows:
if handle != window_1:
driver.switch_to.window(handle)
self.run(driver)
def run(self,driver):
for i in range(1,56):
# i = 1
driver.get(
'http://i.baihe.com/search/search?traceID=1&systemID=2¶ms=%7B%22appId%22%3A%221%22%2C%22channel%22%3A%22appstore%22%2C%22device%22%3A%22android%22%2C%22apver%22%3A%225.8.0%22%2C%22accessToken%22%3A%2212546879%22%2C%22IMEI%22%3A%22%22%2C%22minAge%22%3A%2218%22%2C%22maxAge%22%3A%2225%22%2C%22minHeight%22%3A%22155%22%2C%22maxHeight%22%3A%22175%22%2C%22city%22%3A%22%22%2C%22province%22%3A%228631%22%2C%22education%22%3A%22%22%2C%22income%22%3A%22%22%2C%22page%22%3A%22'+str(i)+'%22%2C%22pageSize%22%3A%2260%22%7D'
)
data = driver.page_source
# print(data)
data = re.match(r""".*?({"code":200.*}})</body></html>""",data).group(1)
# print(data)
data = json.loads(data)
data = data['data']['result']
# print(data)
dict_ = {}
time.sleep(1)
for a in data:
for i in self.lis:
if i in a:
print(a)
dict_[i] = a[i]
# 去重处理
self.stu.update({'userID' : dict_['userID']}, dict(dict_), True)
def main():
xiangq = Xiangq()
# xiangq.run()
if __name__ == '__main__':
main()
使用selenium爬取百合网相关推荐
- 使用Scrapy、PhantomJS和Selenium爬取知网文献摘要
使用Scrapy.PhantomJS和Selenium爬取知网文献摘要.以下例子用于爬取"医药卫生科技"类文献摘要. 1.使用Scrapy创建项目 scrapy startproj ...
- python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息
python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...
- 使用selenium爬取当当网图书
1.目标 利用Selenium抓取当当网图书并用正则表达式获取到得到商品的图片.名称.价格.评论人数信息. 2.开发环境 python2.7 +windows10 +pycharm 3.页面分析 如图 ...
- Selenium爬取MOOC网课程信息
近期在写一份关于大数据相关的作业,需要搜索近年来市面上关于大数据的书籍信息和课程信息.其中一位同学负责在当当网上爬取书籍信息,我就负责爬取MOOC网的课程信息. 刚开始的时候,以为MOOC网作为一个公 ...
- java+selenium爬取知网数据
使用selenium工具爬取知网相关数据,思路:根据几个关键词搜索出相关的内容,然后爬取列表中所有论文的访问链接. 注意:直接爬取的链接是不能用的,需要自己拼接一下.具体看代码.新手,代码写的有点乱. ...
- Python 如何利用selenium爬取同花顺网上市公司2020一季度利润报表
写这篇文章之前我用python爬取了东方财富网上市公司的利润报表,闲来蛋疼我又写了一个爬同花顺官网上面的上市公司利润报表,这次我用的是requests包,下面碰到一些问题记录一下,发送请求前要构造请求 ...
- Python爬取知网信息——Python+selenium爬取知网信息(文献名,作者,来源,发表日期,文献类型)
# -*- coding: utf-8 -*- #时间:2019.5.1 #运行环境Python 3.* ''' 1.运行此代码前需要先下载Chrome浏览器,去百度搜索下载 2.我是利用seleni ...
- python+selenium爬取某网专利数据
记录一下爬某网专利数据经历~~ 新的这个某网页面,检索数据是在主页面嵌套了一个iframe页面,直接通过页面爬的话,还不能直接拿到数据,本次经历主要有以下几个麻烦点: 1.搜索的结果,最多只有300页 ...
- selenium爬取珍爱网用户信息
近期接到一个任务,爬取珍爱网上的用户信息,这个对单身的我来说瞬间提起了兴趣,这有可能是我脱单的开始,哼哼,不装逼了,先来看看怎么帮我脱单,嘻嘻嘻 import requests import time ...
- 使用Selenium爬取网站表格类数据
本文转载自一下网站:Python爬虫(5):Selenium 爬取东方财富网股票财务报表 https://www.makcyun.top/web_scraping_withpython5.html 需 ...
最新文章
- 人脸识别算法_格灵深瞳在人脸识别算法测试(FRVT)中斩获全球第一
- 事务、视图、索引、备份、还原
- python的socket编程执行顺序_Python篇-Socket网络编程
- Ajax 生成流文件下载 以及复选框的实现
- AX7 Form继承接口
- js ws 状态_node.js中ws模块创建服务端和客户端,网页WebSocket客户端
- Linux下利用脚本全自动搭建论坛
- 44.用Tornado实现web界面爬虫
- java 符_java运算符
- SRv6技术课堂(一):SRv6概述
- 小米手机测试代码电池测试代码
- 建立U盘免疫病毒文件
- win10系统安装virtualbox虚拟机win7系统过程记录
- 很多人看都哭了,不信你不哭
- vue-live2d 看板娘
- Total Uninstall 6安装使用
- 弱网测试工具使用--web/pc/app
- 在线ssd测试软件,AS SSD Benchmark测试
- 詹姆斯高斯林_詹姆斯·高斯林(James Gosling)加入RCDb顾问委员会
- makefile中一些符号的含义