selenium+python爬取数据跳转网页

项目要做一个四个层级栏的数据抓取,而且点击查询后数据会在新跳出的网页。

源码如下 注释解释

from selenium import webdriver
import selenium
#from time import sleep as sp

url=‘http://202.127.42.157/moazzys/nongqing.aspx‘
site=webdriver.Chrome()
site.get(url)

#data={}
mainhandle=site.current_window_handle#主页面句柄  每个浏览器标签页都有一个句柄
years=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_year"]/option‘)
co_year=len(years)
for d in range(co_year):
        years[d].click()
        provs=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_prov"]/option‘)
        co_prov=len(provs)
        for c in range(co_prov):
            provs[c].click()
            items=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_item"]/option‘)
            co_item=len(items)
            for b in range(co_item):
                items[b].click()
                types=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_type"]/option‘)
                co_type=len(types)
                for a in range(co_type):
                    types[a].click()
                    #点击进入新窗口
                    site.find_element_by_id(‘ContentPlaceHolder1_btnsearch‘).click()
                    handles = site.window_handles
                    for handle in handles:# 轮流得出标签页的句柄 切换窗口 因为只有两个标签页实际是假for循环
                        if handle!=mainhandle:
                            site.switch_to_window(handle)
                            #获得数据
                            try:
                                raw=site.find_element_by_xpath(‘//tr/td[@align="right"]‘)
                                print (raw.text)
                                #data.append(raw.text)
                            except Exception as e:
                                print("无该数据")
                            #获得数据
                            site.close() #关闭当前标签页
                    site.switch_to_window(mainhandle)#回到原来标签页
                    types=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_type"]/option‘)
                    types[a].click()
                items=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_item"]/option‘)
                items[b].click()
            provs=types=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_prov"]/option‘)
            provs[c].click()
        year=types=site.find_elements_by_xpath(‘//select[@id="ContentPlaceHolder1_year"]/option‘)
        years[d].click()
site.quit()

原文地址:https://www.cnblogs.com/batt1ebear/p/9813584.html

时间: 2024-11-05 16:00:43

selenium+python爬取数据跳转网页的相关文章

selenium+python 爬取网络图片(1) -- soso、谷歌、好搜

做图像处理的朋友,都时常需要收集整理大量的图像数据集.做科研时有各种现有的标准数据集大家都直接拿来用,但是工程上却经常需要自己收集图片,从网上爬取图片便成了比较常见的任务.为了用python完成这个任务,需要解决如下两个问题: 1. 图片素材源自哪里呢?第一直觉就是搜索引擎里的图片,比如要收集手机的图片,则进入搜索引擎搜索关键字即可得到大量相关图片. 2. 动态网站的内容往往是通过ajax异步加载,直接用python中urllib库read到的内容不完整,且需要的内容基本都是异步加载进来的,直接

python爬取数据被限制?一招教你伪造反爬技术!

1.Headers限制 这应该是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作. 这个一般很好解决,把浏览器中的Headers信息复制上去就OK了. 值得注意的是,很多网站只需要userAgent信息就可以通过,但是有的网站还需要验证一些其他的信息,比如知乎,有一些页面还需要 authorization 的信息.所以需要加哪些Headers,还需要尝试,可能还需要Referer.Accept-encoding等信息. 2.IP限制 限制IP也是很多网站反爬虫的初衷,有些人

selenium+python 爬取网络图片(2) -- 百度

上一篇博文介绍了如何用selenium+python在诸如soso.谷歌.好搜等搜索引擎上爬取图片的方法,但是却没用提到百度,因为百度的情况比较特殊.首先,百度图片的数据更好,因为每幅图片都有"data-desc"描述可以作为图像很好的语义标签,此外基于百度较强的技术其查询搜索得到的图片相关性较高,后续人工筛选工作较少:其次,百度图片的数据不容易爬取,如果像前一篇文章中的方法取img标签的src值作为下载url,是下载不到图片的,得到的知识167B的非图像数据. 那么,如何爬取百度图片

python爬取动态生成的网页——以百度手机助手为例

在爬取js动态生成的页面时,直接打开页面是获取不到内容的,比如,我在爬取百度手机助手的应用时,就遇到了这样一个问题.在搜索旅游类应用时,返回数据有几页的内容,但是不管你翻到第几页,查看源代码发现都一样,都是第一页内容的源代码.分析原因我觉得可能是这样的:假设百度应用一页内容有八个应用,你把查询提交后他把内容的前8个生成一个html,然后再你翻页时,通过js,ajax等方式替换原来的8个应用,比如你选择第五页时,把返回应用列表的33-40个应用替换原来的1-8的内容.(应该是ajax或者其他表单提

python爬取数据并保存到数据库中(第一次练手完整代码)

1.首先,下载需要的模块requests, BeautifulSoup, datetime, pymysql(注意,因为我用的python3.7,不支持mysqldb了),具体的下载方法有pip下载,或者使用Anaconda版本python的童鞋可以使用conda下载. 2.创建conndb,py,包含数据库的连接断开,增删改查等操作: #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql def conn_db(): # 连接数

python爬取数据保存入库

import urllib2 import re import MySQLdb class LatestTest: #初始化 def __init__(self): self.url="https://toutiao.io/latest" self.UserAgent='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36'

Python 爬取数据入库mysql

1 # -*- enconding:etf-8 -*- 2 import pymysql 3 import os 4 import time 5 import re 6 serveraddr="localhost" 7 user="root" 8 password="123456" 9 databaseName="test" 10 filename="./data/UNCL.csv" 11 12 def c

python爬取网页数据

python时间戳 将时间戳转为日期 #!/usr/bin/python # -*- coding: UTF-8 -*- # 引入time模块 import time #时间戳 timeStamp = 1581004800 timeArray = time.localtime(timeStamp) #转为年-月-日形式 otherStyleTime = time.strftime("%Y-%m-%d ", timeArray) print(otherStyleTime) python爬

[python爬虫] Selenium定向爬取PubMed生物医学摘要信息

本文主要是自己的在线代码笔记.在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容.        PubMed是一个免费的搜寻引擎,提供生物医学方面的论文搜寻以及摘要.它的数据库来源为MEDLINE(生物医学数据库),其核心主题为医学,但亦包括其他与医学相关的领域,像是护理学或者其他健康学科.它同时也提供对于相关生物医学资讯上相当全面的支援,像是生化学与细胞生物学.        PubMed是因特网上使用最广泛的免费MEDLINE,该搜寻引