python - 如何获取 Span 标签之间的文本 XPATH Python

标签 python xml python-3.x xpath web-scraping

我正在使用此网站 https://www.pealim.com/dict/?page=1 。所以我基本上想得到希伯来语单词及其发音。

下面是我的代码,它循环遍历所有 td 标签,但是,它产生完全相同的输出,如下 {'latin': 'av', 'hebrew': u'\u05d0\u05b8\u05d1'} 此代码仅适用于 page=1。我很想知道是否有任何自动方式可以循环浏览每个页面。

import requests
from lxml import etree

resp = requests.get("https://www.pealim.com/dict/?page=1")

htmlparser = etree.HTMLParser()
tree = etree.fromstring(resp.text, htmlparser)

for td in tree.xpath('//*//table[@class="table table-hover dict-table-t"]/tbody/tr'):
    print(td)
    data = {
        'hebrew': td.xpath('string(//span[@class="menukad"])'),
        'latin': td.xpath('string(//span[@class="dict-transcription"])'),
    }
    print(data)

我想收集该网站中每个条目的信息。请让我知道我可以做些什么来实现这一目标。

最佳答案

import requests
from bs4 import BeautifulSoup
from pprint import pprint

for i in range(1, 411):
    data = []
    resp = requests.get("https://www.pealim.com/dict/?page={}".format(i))
    soup = BeautifulSoup(resp.text, 'lxml')
    for m, t in zip(soup.select('.menukad'), soup.select('.dict-transcription')):
        data.append((m.text, t.text))

    print('PAGE {}'.format(i))
    print('*' * 80)
    pprint(data)

打印:

PAGE 1
********************************************************************************
[('אָב', 'av'),
 ('אַבָּא', 'aba'),
 ('אָבִיב', 'aviv'),
 ('אֵב', 'ev'),
 ('לֶאֱבוֹד', "le'evod"),
 ('לְהֵיאָבֵד', "lehe'aved"),
 ('לְאַבֵּד', "le'abed"),
 ('לְהִתְאַבֵּד', "lehit'abed"),
 ('לְהַאֲבִיד', "leha'avid"),
 ('הִתְאַבְּדוּת', "hit'abdut"),
 ('אִיבּוּד', 'ibud'),
 ('אֲבֵדָה', 'aveda'),
 ('אָבוּד', 'avud'),
 ('לְאַבְחֵן', "le'avchen"),
 ('אִיבְחוּן', 'ivchun')]
PAGE 2
********************************************************************************
[('לְאַבְטֵחַ', "le'avteach"),
 ('אִיבְטוּחַ', 'ivtuach'),
 ('אֲבַטִּיחַ', 'avatiach'),
 ('לֶאֱבוֹת', "le'evot"),
 ('אֵבֶל', 'evel'),
 ('לֶאֱבוֹל', "le'evol"),
 ('אֲבָל', 'aval'),
 ('לְהִתְאַבֵּל', "lehit'abel"),
 ('לְהִתְאַבֵּן', "lehit'aben"),
 ('אֶבֶן', 'even'),
 ('לְהַאֲבִיס', "leha'avis"),
 ('לְהֵיאָבֵק', "lehe'avek"),
 ('מַאֲבָק', "ma'avak"),
 ('לְאַבֵּק', "le'abek"),
 ('אָבָק', 'avak')]
PAGE 3
********************************************************************************
[('לְהִתְאַבֵּק', "lehit'abek"),
 ('לְהִתְאַבֵּק', "lehit'abek"),
 ('מְאוּבָּק', "me'ubak"),
 ('אִיבּוּק', 'ibuk'),

...and so on.

关于python - 如何获取 Span 标签之间的文本 XPATH Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56655227/

相关文章:

java - 带有输入参数的 orm.xml 命名查询

python-3.x - 读取文件时删除子进程缓冲区

python - 无法在基于 CentOS 的 VPS 上构建 uwsgi

python - 无法使用pythons mysqldb执行mysql插入

python - 3D 网格之间的 Hausdorff 距离

python - 从 plpython 函数之间传递一个 real[] 作为参数

css - 修改表格 td 宽度

java - 如何从包含第三方库使用的自定义注释的 XML/XSD 动态创建 Java 对象

django - 使用 Python/Django 每小时更新数据库字段

python - 计算36个月内首付的储蓄百分比