angularjs 获取复选框的值_如何利用Python批量获取天眼查企业信息?

中间很长一段时间,由于各种原因,没有时间继续学习Python。

最近为了捡起Python,我开始不断锻炼自己的爬虫技术——爬取各种网页信息。

一直苦恼于网页登录时各种验证码的处理,感觉无从下手,可能是因为自己太过业余吧,哈哈……

对于审计人员来说,工作中需要经常查询企业信息,为了方便快捷地获取我们想要的企业信息,我一直在思考如何用Python去爬取各大企业信息查询网站。

其实,这个爬虫有很多大佬已经研究出来了,可能也算不上什么高大上的操作技能,而且有一些企业信息查询网站也支持批量查询,但是我还是想利用自己的业余时间把这个爬虫亲自写出来。

当然,也遇到了诸多问题。比如,爬取天眼查网站登录时的滑动验证码。

最终在本猴的不断研究与琢磨中,这个问题被解决了。

解决方案:

    基于cookie绕过验证码自动登录

首先使用selenium手动登录一下,然后获取cookie值保存到本地,之后再登陆的时候直接调用本地cookie就可以了。这样就可以完美地绕过验证码自动登录!

获取cookie的过程就不在这赘述了,小编从来只关心结果。

下面以天眼查为例,开始我们的操作。

把我们需要查询企业的全称依次写入excel模板的A列,见下图:

e75ee27ddae3e7c9e95bcd958267c4a7.png

然后运行以下代码:

from selenium import webdriverfrom time import sleepimport jsonfrom lxml import etreefrom openpyxl import workbookfrom openpyxl import load_workbook#填写webdriver的保存目录driver = webdriver.Chrome()driver.maximize_window()#记得写完整的url 包括http和httpsdriver.get('https://www.tianyancha.com/search?')#首先清除由于浏览器打开已有的cookiesdriver.delete_all_cookies()with open('cookies.txt','r') as cookief:    #使用json读取cookies 注意读取的是文件 所以用load而不是loads    cookieslist = json.load(cookief)    # 方法1 将expiry类型变为int    for cookie in cookieslist:        #并不是所有cookie都含有expiry 所以要用dict的get方法来获取        if isinstance(cookie.get('expiry'), float):            cookie['expiry'] = int(cookie['expiry'])        driver.add_cookie(cookie)#刷新页面driver.refresh()#打开excelwb=load_workbook('数据.xlsx')ws=wb['Sheet1']for i in range(2,ws.max_row+1):  driver.find_element_by_id("header-company-search").clear()  driver.find_element_by_id("header-company-search").send_keys(ws.cell(i,1).value)  driver.find_element_by_xpath('//div[@]').click()  sleep(1)  driver.find_element_by_xpath('//a[@tyc-event-ch="CompanySearch.Company"]').click()  sleep(1)  driver.switch_to_window(driver.window_handles[1])  source=driver.page_source  html=etree.HTML(source)  name=html.xpath('//h1[@]')  zczb=html.xpath('//td[@]/div')  sjzb=html.xpath('//td[@width=""]')  zcdz=html.xpath('//div[@style="max-height:16px;"]/div')  jyfw=html.xpath('//td[@colspan="4"]/span')  #写入excel  ws.cell(i,2).value=zczb[0].text  ws.cell(i,3).value=sjzb[0].text  ws.cell(i,4).value=zczb[1].text  ws.cell(i,5).value=sjzb[1].text    ws.cell(i,6).value=zcdz[0].text  ws.cell(i,7).value=jyfw[0].text  driver.close()  driver.switch_to_window(driver.window_handles[0])  sleep(1)#保存excelwb.save('数据.xlsx')

运行如下:

计算机全自动操作网页

酷不酷?

运行结束,打开excel模板,最终结果如下:

f9a3d4a24d64f04899a01152fc83c55e.png

这样我们就可以很轻松地获取到企业信息,如果想要获取企业其他信息,可以通过修改代码来实现,前提是要有一定的编程基础。

其实刚才爬取的信息即使不用登录也一样可以获取到,但是有些信息必须登陆之后才可以获取,所以小编还是利用一定的技术实现登录之后再来爬取相关信息。

喜欢小编的文章或者想更多了解小编的话

可以扫一扫关注小编的个人公众号

(关注即领取Python全套视频教程)

246621a707e1fedc99e6ce54fefd0629.png

小编微信

3d9d26a6dfba3cae345af311f31bf3ac.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值