PYTHON 实战演练

这是我写的一个爬去全国高校坐标信息的一个代码,是自己第一个爬虫代码
在这里插入图片描述
1、收集全国高校名称数据:
http://www.sohu.com/a/233187646_507611
进入网址,复制粘贴所有的高校名单数据,建立 TXT 文件

在这里插入图片描述
2、 python 代码实现:
在地图中在这里插入图片描述
我们发现有几个注意的地方:
(1):输入北京大学的输入框,也就是 input , input1
(2):百度一下 的点击框,submit , submit
(3):坐标A, submit1 , subnit3
(4):点击更换城市之后的输入框, input2
(5):input2 之后,点击确定的 submit2

# 引入库
from selenium import webdriver
from pyquery import PyQuery as pq
import pymongo
from config import *
import time
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from multiprocessing import Pool
# 打开浏览器和百度地图网址
browser = webdriver.Chrome()
url = ('http://api.map.baidu.com/lbsapi/getpoint/index.html?qq-pf-to=pcqq.c2c')
wait = WebDriverWait(browser, 0.2)
 # 定义获取坐标函数
def get_coordinate():
    n = 0
    # 打开制作好的 txt 文件
    controlFile = open("/home/yiyang/PycharmProj"
                        +"ects/Coordinate/universtylist.txt", "r")
     # 遍历 txt 文件中的元素并附值
    lstcon = controlFile.readlines()
    for point in lstcon:
        n = n+1
        try:
            Isvalue = point.split(",")
            ID = str(Isvalue[0])
            number = str(Isvalue[1])
            office = str(Isvalue[2])
            city = str(Isvalue[3])
            level = str(Isvalue[4])
            # 打开浏览器
            browser.get(url)
            # 定位网址中的输入框
            input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#localvalue')))
            # 定位点击搜索框
            submit = wait.until(EC.presence_of_element_locate((By.CSS_SELECTOR, '#localsearch')))
            # 清空输入框中的变量
            input.clear()
            # 传入高校名称变量
            input.send_keys(ID)
            # 点击搜索
            submit.click()
            time.sleep(1)
            # 获取坐标信息
            submit1 = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#no_0 > a')))
            submit1.click()
            # 解析网页
            html = browser.page_source
            doc = pq(html)
            # 将获取的信息建立字典
            product = {
                'name': ID,
                'number': number,
                'office': office,
                'city': city,
               'level': level,
                'coordinate': doc('#pointInput').attr('data-clipboard-text')
            }
        except EnvironmentError:
            # 出错原因是百度地图不能自动切换学校所在地
            # 所以我们要人为的切换
            # 定位学校地址输入城市框
            input1 = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#localvalue')))
            input1.clear()
            input1.send_keys(ID)
            # 点击更换城市的 submit1
            submit1 = wait.until(EC.presence_of_element_locate((By.CSS_SELECTOR, '#curCityText')))
            submit1.click()
            input2 = wait.until(EC.presence_of_elem的ent_locate((By.CSS_SELECTOR, '#selCityInput')))
            submit2 = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#selCityButton')))
            input2.clear()
            input2.send_keys(city)
            submit2.click()
            # 点击搜索
            time.sleep(2)
            submit = wait.until(EC.presence_of_element_locate((By.CSS_SELECTOR, '#localsearch')))
            submit.click()
            time.sleep(3)
            # 点击第一个选择目标
            submit3 = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#no_0 > a')))
            submit3.click()
            # 解析网页
            html = browser.page_source
            doc = pq(html)
            product = {
                'name': ID,
                'number': number,
                'office': office,
                'city': city,
                'level': level,
                'coordinate': doc('#pointInput').attr('data-clipboard-text')
            }
        print(n, product)
        controlFile.close()
    # 将建立的 product 字典存入 CSV 文件
    with open('/home/yiyang/PycharmProjects/'+
    	'Coordinate/universtylist.csv', 'a',encoding = 'GBK') as csvfile:
            fieldnames = ['name', 'number', 'office', 'city', 'level', 'coordinate']
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
            writer.writerow(product)
            csvfile.close()
if __name__ == "__main__":
    get_coordinate()

3、思维导图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么学PythonPython 是当今非常热门的语言之一,2020年的 TIOBE 编程语言排行榜中 ,Python名列第一,并且其流行度依然处在上升势头。 在2015年的时候,在网上还经常看到学Python还是学R的讨论,那时候老齐就选择了Python,并且开始着手出版《跟老齐学Python》。时至今日,已经无需争论。Python给我们带来的,不仅仅是项目上的收益,我们更可以从它“开放、简洁”哲学观念中得到技术发展路线的启示。 借此机会,老齐联合CSDN推出了本课程,希望能影响更多的人走进Python,踏入编程的大门。 【课程设计】 本课程共包含三大模块: 一、基础知识篇 内置对象和基本的运算、语句,是Python语言的基础。本课程在讲解这部分知识的时候,不是简单地将各种知识做简单的堆砌,而是在兼顾内容的全面性的同时,更重视向学习者讲授掌握有关知识的方法,比如引导学习者如何排查错误、如何查看和理解文档等。   二、面向对象篇 “面向对象(OOP)”是目前企业开发主流的开发方式,本课程从一开始就渗透这种思想,并且在“函数”和“类”的学习中强化面向对象开发方式的学习——这是本课程与一般课程的重要区别,一般的课程只在“类”这里才提到“对象”,会导致学习者茫然失措,并生畏惧,乃至于放弃学习。本课程则是从开始以“润物细无声”的方式,渗透对象概念,等学习到本部分的时候,OOP对学习者而言有一种“水到渠成”的感觉。   三、工具实战篇 在项目实战中,除了前述的知识之外,还会用到很多其他工具,至于那些工具如何安装?怎么自己做工具?有那些典型工具?都是这部分的内容。具体来说,就是要在这部分介绍Python标准库的应用以及第三方包的安装,还有如何开发和发布自己的工具包。此外,很多学习Python的同学,未来要么从事数据科学、要么从事Web开发,不论哪个方向,都离不开对数据库的操作,本部分还会从实战的角度,介绍如何用Python语言操作常用数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值