网络爬虫时候死活无法定位搜索框
最近接触python后发现很多东西需要实践才能深刻体会,然后就结合实际在工作中的一些内容,想减轻工作负担,所以就尝试python解决但是功夫不到家,有些地方自己研究了很久还是没解决到,故求助各位大神,话不多说,我先解释一下整个任务要求:
商标局商标查询网址如下:
http://wcjs.sbj.cnipa.gov.cn/txnS02.do?RyPaGY3r=qqc_TCjnBLy71fnn94DEjcyYhw2RraM0DOoxpY8cQDIfdaB8CcxaUHlonmcu6ltV7dIUMCI9XcWTvkDVxCbRqnhOjmGDXfvEl8zNwS1HphiP81rlqha1OlcltkjquzZ1gg7LmZkhKoe3yp61B9nTbIwjGc7&dy8fK6xo=2jCPzhW.xFlKm3DvEKqtFhfD8L313CnuCZA9EJTxAn4DNqWrc8U9wWN2KxnF4A7BLMGuEF4gz1R5Snt1VXpaUf7xPT3oi40PLcTR7OHlL040etaFa9X.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/table/tbody/tr/td/div/input') #用xpath定位“申请人名称(中文)”的搜索框
搜索框输入内容=定位搜索框.send_keys ( "百度在线网络技术(北京)有限公司" ) #确定用“申请人名称(中文)”这个检索条件,在该检索框输入的内容为“百度在线网络技术(北京)有限公司”
点击=driver.find_element_by_id(r"_searchButton").click() #点击搜索
这个网站是否需要登录?? 不好弄啊 ,检索时还要输入验证码 wp231957 发表于 2021-9-17 09:51
不好弄啊 ,检索时还要输入验证码
那个验证码后面再谈,问题是 我根本没办法定位 然后输入那个 公司名称 到那个框,然后就没办法继续后面的点击查询的python操作。我本来的想法是一个个步骤去攻略结果就卡在那个定位框那里了。不过我有百度搜索过怎么样处理验证码问题,据说会有一些OCR技术可以帮忙处理验证码,虽然我还没认真去研究{:5_104:} wp231957 发表于 2021-9-17 09:51
不好弄啊 ,检索时还要输入验证码
我尝试过用百度的搜索框定位是成功的,但是到了这个商标局的搜索框定位 不知道为啥没有一个方法是成功定位的。sad Him_洪 发表于 2021-9-17 22:06
那个验证码后面再谈,问题是 我根本没办法定位 然后输入那个 公司名称 到那个框,然后就没办法继续后面的 ...
验证码肯定好弄,但是要花银子,不花银子的方法,我试过,都无法识别
在我看来,前面部分都好弄, wp231957 发表于 2021-9-17 22:08
验证码肯定好弄,但是要花银子,不花银子的方法,我试过,都无法识别
在我看来,前面部分都好弄,
所以为什么我还是定位不到这个搜索框的位置?
我用F12查看了 那个搜索框明明就有 name啊
定位搜索框=driver.find_element_by_name('request:hnc')
这里为什么会报错呢?{:5_104:} wp231957 发表于 2021-9-17 22:08
验证码肯定好弄,但是要花银子,不花银子的方法,我试过,都无法识别
在我看来,前面部分都好弄,
不花银子的话,暴力识别 50 次,碰运气,万一对了呢?
主要是这种只要有干扰项就搞不了,而且多次登录失败不会被认为是撞库封 IP 才行{:10_277:} Him_洪 发表于 2021-9-17 22:36
所以为什么我还是定位不到这个搜索框的位置?
我用F12查看了 那个搜索框明明就有 name啊
定位搜索框=dr ...
可能是后期 load 出来的?你让 selenium 等几秒再搜索试试?{:10_277:} Him_洪 发表于 2021-9-17 22:36
所以为什么我还是定位不到这个搜索框的位置?
我用F12查看了 那个搜索框明明就有 name啊
定位搜索框=dr ...
可以的,有图为证 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/table/tbody/tr/td/div/input')
time.sleep(3)
txt=search.send_keys ( "百度在线网络技术(北京)有限公司" )
ok=driver.find_element_by_id(r"_searchButton").click()
另:不建议使用中文变量 看起来太乱了
我没有测试,,headers 应该是不用加的,,selenium 自己应该有封装 wp231957 发表于 2021-9-18 08:27
开始时我没加延时 也就是你的原装代码 也通过一次,但是第二次 就没有通过
所以玩selenium...
是我没学会走路就先跑步了 害但是依然感恩大佬,
没用延时,是因为我以为 如果我不加延时 他可以一直运行直到成功,如果加了延时,那么延时完毕之后还不行那岂不是白搭……然后我当时就傻乎乎没加,所以我很纳闷为什么第一次成功,后面没有一次成功定位了。
用中文变量是因为我很容易绕晕,毕竟不是专业的,我这边努力慢慢改吧 哈哈
真的谢谢啦{:5_95:}
页:
[1]