如何解决Easy HTML Scraper:通过单元格内的锚点属性验证刮板行结果吗?
我正在JSON文件中编辑其他人的代码,并且尝试使用Easy HTML Scraper验证刮板搜索结果(不是那么容易!)
在终端中进行测试时,以下BeautifulSoup代码可以满足我的要求:
page_soup.select('table')[5].select('tr:contains("Search String")')
它从表中获取行并验证它们是否正确。不幸的是,当没有搜索结果时,该表包含随机行,因此需要进行验证。
尽管我可以看到导入了bs4程序的某些.py文件,但似乎无法识别出使用上述代码(不带前导字符串page_soup。)的JSON。改用EHP,我可以正确选择表和行,但无需使用以下方法进行验证:
"row": "find_once('table',('class','forum_header_border'),order=3).find_all('tr')"
此表的工作方式,如果一行有效,则所有行均有效。为了进行验证,我需要能够比较锚标记,单元格,行的属性,但是我无法使其工作。我一直在寻找EHP(https://pydoc.net/ehp/2.0.1/ehp/)的各种选项,这些选项可以返回父母,例如:
find_with_root(name,*args)
take_with_root(*args)
match_with_root(*args)
我已经检查了JSON中其他所有刮板的“行”行(在此处{https://hastebin.com/esuheweguz.sql)进行了尝试,以尝试将其用于我的目的,但未成功。
此bin(https://del.dog/unamogruna.txt)是完整HTML的摘录,其中包含表,其中包含有效的行,因为存在有效的搜索结果。
使用Easy HTML Parser可以进行这种验证吗?最终,如果可能的话,我希望将其与{title}进行比较,但一个好的开始是手工字符串。
为了进行测试,要排除使用{title}的任何问题,我首先尝试查找带有类'searchinfo'的锚标签的父td标签,该标签的父tr标签和父表标签其中。然后,我应该可以从该表中找到所有trs。
我认为需要类似的东西,这是错误的,因为我使用的是错误的方法,错误的语法或错误的顺序-可能全部是三个:
"row": "find_with_root(('a','searchinfo')).find_with_root('td').find_all('tr')"
几天前我才开始研究python并进行抓取,但是如果有更多经验的人来研究它,他们可能会很快得出解决方案。
编辑:
在查看另一排刮板的非行之后:
"anotherline": "item.take_with_root(('src','http://img.abcdefg.com/pic/protocol-icon-49sw-12h.gif'))[0].attr['href'].replace('protocol:?xt=urn:btih:)[0].attr['href'].replace('protocol:?xt=urn:btih:)','') if item.take_with_root(('src','http://img.abcdefg.com/pic/protocol-icon-12w-12h.gif')) else ''",
我正在我正在编辑的行上尝试条件语句:
"row": "find_once('table',order=3).find_all('tr') if 1<2 else ''",
并且根据情况正常运行。如果现在我能确定如何使这种情况成为要搜索的字符串输入是否为以下值:
/html/body/div[1]/table[1]/tbody/tr/td/form/div[1]/input
从表中title属性的开头匹配相同数量的字符:
/html/body/div[1]/table[5]/tbody/tr[3]/td[2]/a
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。