使用xpath爬取字典内容
最近因为业务需要批量获取一些权威字典的内容,比如韦氏字典的音节划分,比如词源字典中的词根词缀解释。
所有这些工作其实都可以提一个需求给开发的,但是提需求流程好长,耗时也好久噢。因为自己感兴趣,所以就索性自己动手研究了,当然这途中也少不了开发朋友的帮忙。
具体实现方法很简单:
- 使用浏览器浏览页面元素,定位到对应的文本内容,复制对应的xpath
- 使用requets发起http请求,并将返回的结果使用etree解析
标签下只有一个内容
import requests
from lxml import etree
def get_data(word):
wb_data = requests.get(f"https://www.merriam-webster.com/dictionary/{word}").text
html = etree.HTML(wb_data)
html_data = html.xpath(" /text()")
return html_data[0]
此处需要在xpath的文本后面加上`' /text()'
标签下有多个内容
def get_data(word):
wb_data = requests.get(f"https://www.etymonline.com/search?q={word}").text
html = etree.HTML(wb_data)
contents = html.xpath("")
ret = []
for e in contents:
ret.append(e.xpath('string(.)'))
return ret
xpath的string()可以获取当前子节点的所有文本