python 爬网站 实例_不会编程的厨师,不是一名好老公。两周零基础入门python+selenium,实例爬取企查查数据...

春节已过,疫情未过,老婆已然复工,我仍然家里蹲,成天大把的时间,除了研究下喜欢的家常菜,总在寻思着干点啥。

这不,老婆天天跟我念叨银行压力大,他们零售苦逼,领导又是变态什么的,我自告奋勇为家里领导分忧,领导甩手扔给我一张excel,让我查电话号码:

d645fa1387a71466e76e67d4cb0fac31.png

这一看,傻了我,这得查到什么时候,突然想起像这种重复性的体力劳动,貌似可以用编程来解决,便咨询了一个程序员朋友,确认python就可以,咱说干就干,优酷,百度,知乎统统上,搜了下python教程,又傻眼了,这么多,各种零基础教程、书籍,然后找了两三个最新的教程看了两三集,发现纸上得来终觉浅,绝知此事要躬行,便在微信读书上找到《python编程:从入门到实践》,从基础开始,循序渐进,在这里也强烈推荐各位零基础的朋友不要想着通过看视频教程速成,多看入门书籍打好基础才是关键。

大概看了一周多的时间,看完了基础知识,觉得已经python入门了,便跳过后面的三个项目学习,直奔主题,想着自己编写一个程序来实现电话号码的查询。 然后又是知乎,百度,优酷一顿搜,对我要写的这个程序大概也解析了一下架构:

首先,我要抓取Excel表里的公司名字,这就需要python里的xlrd库;

其次,我要让python驱动浏览器,打开企查查官网,遍历这些公司名字,模拟人工操作,查询并抓取其法人信息及电话号码,这就需要python里的自动化测试selenium库;

最后,让python把这些信息写入Excel表格中,就需要xlwt库。

搞清楚了架构,立马现学现卖,xlrd库的几个操作相对简单,三两下就捣鼓出来了,然后便是重头戏selenium库了,先是下载谷歌浏览器,又是安装驱动,终于可以开干了,一上来就懵逼了,网页页面元素定位,一大堆html语言,看不懂,再次知乎、百度、优酷一顿搜,看着别人的实操,对照自己的需求,终于摸索到差不多了,能准确定位到页面元素进行相关操作了,结果又遇到一个难题,看网上大神操作,什么滑动验证,什么通过cookie跳过登录,对于我这个入门一周多的萌新来说,我太难了~~~~。最后睡觉前刷知乎,突然茅塞顿开,为什么一定要自动登录进行验证操作呢,我自己登录一次,后面最重最累的活,再让python来干不就完事了吗。一想到这,我是垂死病中惊坐起,起身穿衣开电脑,立马修改白天写的程序进行验证。发现前面python+selenium一顿操作打开网页后,引入time.sleep(10),然后给我stop,终于可以开始我的表演了,鼠标点击二维码登录,然后潇洒的拿出手机扫一扫,后面就翘着二郎腿,静观python的表演了。

手动登录:

41ab1c91b43bfb1498767023d0dbc582.png
手动微信登录企查查官网https://www.zhihu.com/video/1216790973235568640

自动查询

d139880c4497e01df558333eb2b3bba0.png
python+selenium 自动抓取数据https://www.zhihu.com/video/1216791045977006080

最后,还是贴上我自己写的程序,各位大神,一周多的萌新,请轻喷。

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions

from selenium.common.exceptions import NoSuchElementException

#在查询过程中发现有时候excel里有些公司名字因为变更过名字或者其他错误在企查查上查不到,这个时候python就会出现NoSuchElementException异常而停止工作,这个时候我们就要用try-except-else结构来跳过这些个公司,就要引入 NoSuchElementException 库。

import xlwt

import xlrd

import time

driver = webdriver.Chrome()

driver.get('企查查-企业工商信息查询系统_查企业_查老板_查关系就上企查查!')

driver.maximize_window()

time.sleep(1)

driver.find_element_by_xpath('/html/body/header/div/ul/li[14]/a/span').click()

time.sleep(1)

driver.find_element_by_id('normalLogin').click()

time.sleep(10)

#这个时候,让python暂停10秒,拿出我们的手机,潇洒的扫一扫,成功登陆

data = xlrd.open_workbook('老婆大人交代的任务.xlsx')

table = data.sheets()[0]

companies = table.col_values(2,2309,2701)

#values(2,2309,2701),其中2701表示到2701结束,不包括2701,因此我本要查到2700,但是要输入2701

khdhs = []

for company in companies:

ele = driver.find_element_by_id('searchkey')

ele.send_keys(company)

driver.find_element_by_xpath('/html/body/section[1]/div/div/div/form/div/span/input').click()

try:

kehu = driver.find_element_by_css_selector('#search-result > tr.frtrt > td:nth-child(3) > p:nth-child(3) > a').text

except NoSuchElementException:

print('公司名字不对,需手动查找')

khdhs.append('公司名字不对,需手动查找')

driver.back()

time.sleep(0.5)

else:

dianhua = driver.find_element_by_css_selector('#search-result > tr.frtrt > td:nth-child(3) > p:nth-child(4) > span').text

khdh = str(kehu) + str(dianhua)

print(khdh)

khdhs.append(khdh)

driver.back()

time.sleep(0.5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值