用pythonrequest/lxml进行Web抓取:从ul/li获取数据

2024-05-15 02:41:35 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我对这个问题很陌生,我在谷歌上也没找到任何关于这个问题的东西。在

我使用requestlxmlPython一起使用,我看到有很多不同的模块用于web抓取,但是有没有理由选择其中一个而不是另一个呢?你能用requests/lxml做同样的事情吗?比如beauthoulsoup?在

不管怎样,这是我的问题

这是我的代码:

import requests
from lxml import html

# Login data
inputUrl = 'http://forum.mytestsite.com/login'
usr = 'myusername'
pwd = 'mypassword'
payload = dict(login=usr, password=pwd)

# Open session
with requests.Session() as s:
    # Login
    s.post(inputUrl, data=payload)

    # Get page data
    pageResult = s.get('http://forum.mytestsite.com/icons/', allow_redirects=False)
    pageResult = html.fromstring(pageResult.content)
    pageIcons = pageResult.xpath('//script[@id="table-icons"]/text()')
    print pageIcons[0]

打印页面图标[0]时的结果

^{pr2}$


这是生成代码的

<script id="table-icons" type="text/x-handlebars-template">
  <ul id="icons">
    {{#each icons}}
       <li data-handle="{{handle}}">
         <img src="{{image_path}}" alt="{{desc_or_name this}}" title="{{desc_or_name this}}">
       </li>
    {{/each}}
  </ul>
</script>

下面是页面上的结果:

<ul id="icons">
    <li data-handle="558FSTBI" class="">
        <img src="http://testsite.com/icons/558FSTBI.1.png" alt="Icon 1" title="Icon 1">
    </li>
    <li data-handle="310AYTZI">
        <img src="http://testsite.com/icons/310AYTZI.1.png" alt="Icon 2" title="Icon 2">
    </li>
    <li data-handle="669PQXBI" class="">
        <img src="http://testsite.com/icons/669PQXBI.1.png" alt="Icon 3" title="Icon 3">
    </li>
</ul>



我的目标:
我想做的是检索所有的li数据句柄,但我还没有找到如何检索这些数据的方法。所以我的目标是检索所有的图标路径和它们的标题,有人能帮我吗?非常感谢您的帮助:)


Tags: srccomidhttpimgdatatitleli
1条回答
网友
1楼 · 发布于 2024-05-15 02:41:35

您没有分析liul。在

从这个开始

//ul[@id='icons']/li/img

从这些元素中,你可以提取个人信息

关于第一个问题,beauthoulsoup可以选择使用lxml。如果您认为自己不需要它,并且对XPath很熟悉,那么不要担心它。在

但是,由于是Javascript生成页面,所以您需要一个无头浏览器而不是请求库。在

Get page generated with Javascript in Python

Reading dynamically generated web pages using python

相关问题 更多 >

    热门问题