鱼C论坛

 找回密码
 立即注册
查看: 1865|回复: 11

网络爬虫时候死活无法定位搜索框

[复制链接]
发表于 2021-9-16 23:19:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近接触python后发现很多东西需要实践才能深刻体会,然后就结合实际在工作中的一些内容,想减轻工作负担,所以就尝试python解决
但是功夫不到家,有些地方自己研究了很久还是没解决到,故求助各位大神,话不多说,我先解释一下整个任务要求:

商标局商标查询网址如下:
http://wcjs.sbj.cnipa.gov.cn/txn ... aFa9X.qkDuloAz0.kKg

我希望以后我能通过python自动登录商标局,然后查询到我希望查询的企业的商标情况,然后把这些情况爬取下来
现在遇到的第一个门槛是,我用了所有【driver.find_element_by_】 都无法定位成功具体的搜索框
那个商标查询网页一共有5个检索条件框,我选用的是“申请人名称(中文)”这个检索框
就是在这个检索框输入公司中文名字,然后点击“查询”就能跳转查看到 该公司全部的商标情况

我尝试用driver.find_element_by_xpath,用driver.find_element_by_name,都不成功


我写的代码如下:
from selenium import webdriver    #引入模块

import urllib.request

driver = webdriver.Chrome( )      #打开指定浏览器

网址="http://wcjs.sbj.cnipa.gov.cn/txnS02.do?RyPaGY3r=qqrwdIZpmaLl49CEdA4YihgIVcPqqqYbHOENBVFeK50si3j.VYUrqez06VnvCC9s7ffxha6bAUiXkgHAAWeSJ7EqCwV83mfXUIlTxaFMk8zy1aFuM9Ugl7DOjjgz57ITXiMaq1m14hzYRnaQKd4ko4f92eN4OYxLu6GWE46sv9cijgkb&dy8fK6xo=2xNmH6E..RnyPLTDwY_neISRhYVlxz5NSmBaHykFbThgleYt_JAnT1xJxID_k2_qOzW2SweOmGFPIJya17BfqUBjAJanl31MHr0vD74OfywvkpEKlPDGlL2csV3oe7asa"

头部={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"}  

请求响应=urllib.request.Request(网址,headers=头部)  #封装网页,防止被识破是python自动程序

driver.get(网址)

定位搜索框=driver.find_element_by_xpath('//*[@id="submitForm"]/div/div[1]/table/tbody/tr[4]/td[2]/div/input')     #用xpath定位“申请人名称(中文)”的搜索框

搜索框输入内容=定位搜索框.send_keys ( "百度在线网络技术(北京)有限公司" )       #确定用“申请人名称(中文)”这个检索条件,在该检索框输入的内容为“百度在线网络技术(北京)有限公司”

点击=driver.find_element_by_id(r"_searchButton").click()   #点击搜索
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-17 07:02:52 From FishC Mobile | 显示全部楼层
这个网站是否需要登录??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 09:51:10 | 显示全部楼层
不好弄啊 ,检索时  还要输入验证码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 22:06:09 | 显示全部楼层
wp231957 发表于 2021-9-17 09:51
不好弄啊 ,检索时  还要输入验证码

那个验证码后面再谈,问题是 我根本没办法定位 然后输入那个 公司名称 到那个框,然后就没办法继续后面的点击查询的python操作。我本来的想法是一个个步骤去攻略结果就卡在那个定位框那里了。不过我有百度搜索过怎么样处理验证码问题,据说会有一些OCR技术可以帮忙处理验证码,虽然我还没认真去研究
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 22:07:48 | 显示全部楼层
wp231957 发表于 2021-9-17 09:51
不好弄啊 ,检索时  还要输入验证码

我尝试过用百度的搜索框定位是成功的,但是到了这个商标局的搜索框定位 不知道为啥没有一个方法是成功定位的。sad
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-17 22:08:29 From FishC Mobile | 显示全部楼层
Him_洪 发表于 2021-9-17 22:06
那个验证码后面再谈,问题是 我根本没办法定位 然后输入那个 公司名称 到那个框,然后就没办法继续后面的 ...

验证码肯定好弄,但是要花银子,不花银子的方法,我试过,都无法识别
在我看来,前面部分都好弄,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-17 22:36:51 | 显示全部楼层
wp231957 发表于 2021-9-17 22:08
验证码肯定好弄,但是要花银子,不花银子的方法,我试过,都无法识别
在我看来,前面部分都好弄,

所以为什么我还是定位不到这个搜索框的位置?
我用F12查看了 那个搜索框明明就有 name啊
定位搜索框=driver.find_element_by_name('request:hnc')
这里为什么会报错呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-18 02:49:34 | 显示全部楼层
wp231957 发表于 2021-9-17 22:08
验证码肯定好弄,但是要花银子,不花银子的方法,我试过,都无法识别
在我看来,前面部分都好弄,

不花银子的话,暴力识别 50 次,碰运气,万一对了呢?

主要是这种只要有干扰项就搞不了,而且多次登录失败不会被认为是撞库封 IP 才行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-18 02:50:18 | 显示全部楼层
Him_洪 发表于 2021-9-17 22:36
所以为什么我还是定位不到这个搜索框的位置?
我用F12查看了 那个搜索框明明就有 name啊
定位搜索框=dr ...

可能是后期 load 出来的?你让 selenium 等几秒再搜索试试?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-18 08:24:44 | 显示全部楼层
Him_洪 发表于 2021-9-17 22:36
所以为什么我还是定位不到这个搜索框的位置?
我用F12查看了 那个搜索框明明就有 name啊
定位搜索框=dr ...

可以的,有图为证
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-18 08:27:29 | 显示全部楼层
Him_洪 发表于 2021-9-17 22:36
所以为什么我还是定位不到这个搜索框的位置?
我用F12查看了 那个搜索框明明就有 name啊
定位搜索框=dr ...


开始时  我没加延时   也就是你的原装代码   也通过一次,但是第二次 就没有通过

所以  玩selenium 添加延时  还是必要的

from selenium import webdriver   
import time
driver = webdriver.Chrome( )     
url="http://wcjs.sbj.cnipa.gov.cn/txnS02.do?RyPaGY3r=qqrwdIZpmaLl49CEdA4YihgIVcPqqqYbHOENBVFeK50si3j.VYUrqez06VnvCC9s7ffxha6bAUiXkgHAAWeSJ7EqCwV83mfXUIlTxaFMk8zy1aFuM9Ugl7DOjjgz57ITXiMaq1m14hzYRnaQKd4ko4f92eN4OYxLu6GWE46sv9cijgkb&dy8fK6xo=2xNmH6E..RnyPLTDwY_neISRhYVlxz5NSmBaHykFbThgleYt_JAnT1xJxID_k2_qOzW2SweOmGFPIJya17BfqUBjAJanl31MHr0vD74OfywvkpEKlPDGlL2csV3oe7asa"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"}  
driver.get(url)
time.sleep(3)
search=driver.find_element_by_xpath('//*[@id="submitForm"]/div/div[1]/table/tbody/tr[4]/td[2]/div/input')     
time.sleep(3)
txt=search.send_keys ( "百度在线网络技术(北京)有限公司" )      
ok=driver.find_element_by_id(r"_searchButton").click()  

另:不建议使用中文变量   看起来  太乱了
我没有测试,,headers 应该是不用加的,,selenium 自己应该有封装
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-18 16:09:02 | 显示全部楼层
wp231957 发表于 2021-9-18 08:27
开始时  我没加延时   也就是你的原装代码   也通过一次,但是第二次 就没有通过

所以  玩selenium  ...

是我没学会走路就先跑步了 害  但是依然感恩大佬,
没用延时,是因为我以为 如果我不加延时 他可以一直运行直到成功,如果加了延时,那么延时完毕之后还不行那岂不是白搭……然后我当时就傻乎乎没加,所以我很纳闷为什么第一次成功,后面没有一次成功定位了。
用中文变量是因为我很容易绕晕,毕竟不是专业的,我这边努力慢慢改吧 哈哈
真的谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 08:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表