【问题标题】:While loop for the entire list not just a single index lxml整个列表的while循环不仅仅是一个索引lxml
【发布时间】:2022-09-23 21:33:05
【问题描述】:

理想情况下,我想保持我的代码不变,只用一个while循环来补充它,它将输出列表的所有元素,直到列表的最后一部分(我知道可能有 - 一个更简单的解决方案,但我想提高我的知识在我自己的例子的上下文中的while循环)。

import requests
import lxml.html as lh
from lxml.etree import tostring
req=requests.get(\'https://www.dailymail.co.uk/debate/article-11113609/DAN-WOOTTON-intolerant-left-belittles-death-threats-against-JK-Rowling-peril.html#comments-11113609\')
df=lh.fromstring(req.text)
### Can we use a while loop here to output all the results of the entire list iteration below
f=0+1
elem = df.xpath(\'//script\')[f]
print(tostring(elem))

例子:

elem = df.xpath(\'//script\')[0]
print(tostring(elem))

输出:

b\"\\n var disableAds = true;\\n PageCriteria = window.PageCriteria || {};\\n PageCriteria.clientIP = \'83.20.32.187\';\\n PageCriteria.nonAdservable = \'\' === \'true\';\\n PageCriteria.device = \'other\';\\n PageCriteria.liveCommentary = false;\\n\\n\\n\\n\"

我试图让我的代码输出列表以下部分的整个结果,但使用 while 循环而不是必须手动列出所有列表索引。

elem = df.xpath(\'//script\')[0]
elem = df.xpath(\'//script\')[1]
elem = df.xpath(\'//script\')[2]

直到列表的最后一个索引。

    标签: python web-scraping xpath while-loop lxml


    【解决方案1】:

    不确定这是否是您希望实现的目标:

    import requests
    import lxml.html as lh
    from lxml.etree import tostring
    
    link = 'https://www.dailymail.co.uk/debate/article-11113609/DAN-WOOTTON-intolerant-left-belittles-death-threats-against-JK-Rowling-peril.html#comments-11113609'
    
    req = requests.get(link)
    df = lh.fromstring(req.text)
    script_count = len(df.xpath('//script'))
    
    for index in range(script_count):
        elem = df.xpath('//script')[index]
        print(tostring(elem))
    

    使用 while 循环:

    req = requests.get(link)
    df = lh.fromstring(req.text)
    
    index = 0
    while True:
        try:
            elem = df.xpath('//script')[index]
        except IndexError:
            break
    
        print(tostring(elem))
        index+=1
    

    【讨论】:

    • 非常感谢,这太棒了。我想除此之外,我正在查看相同的逻辑和输出,但使用 while 循环。
    • 查看编辑@Babiqowski。
    • 我刚刚检查过,当从上面运行 while 循环代码时,我陷入了一个循环,它一直在运行,直到我强制关闭
    • 一旦遇到IndexError,脚本就会相应地退出循环。只有当您以不同的方式修改它时,它才会表现得不同。
    • 谢谢,确实好像我可能改变了一些东西。
    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多