recherche

Maison  >  Questions et réponses  >  le corps du texte

python - 这个字段的src属性如何用xpath选择?

<img class="js-refreshCaptcha captcha" width="120" height="30" data-tip="s$t$看不清楚?换一张" alt="验证码" src="/captcha.gif?r=1462431202340&amp;type=login" style="display: block;">

这个字段的src属性如何用xpath选择?

我的写法是:

captcha_url = response.xpath('/html/body/p[1]/p/p[2]/p[2]/form/p[1]/p[3]/p/img/@src').extract()

中间的xpath是从chrome直接copy的
但是无法显示出src属性,最后弹出的是[]
不知道哪里有问题、
另外如果知道css选择器怎么写的,也可以告知一下,我看到class中有空格,不知道如何选择.
我的写法是:

captcha_url = response.css('.js-refreshCaptcha .captcha::attr(src)').extract()

从Scrapy命令行中一步步测试得到,是不是因为是JS动态生成的原因?才会导致@src属性无法获取?

PHPzPHPz2889 Il y a quelques jours630

répondre à tous(5)je répondrai

  • 迷茫

    迷茫2017-04-17 17:43:53

    Que voulez-vous faire, filtrer le code HTML capturé ? Vous pouvez envisager une recherche régulière

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:43:53

    Chrome dispose d'un outil appelé xpath-helper, qui peut être téléchargé depuis l'App Store. Vous pouvez utiliser cet outil pour vérifier si votre syntaxe XPath est correcte.
    De plus, si la syntaxe est correcte mais ne peut pas être extraite dans le programme, alors il faut considérer que la page web d'origine est une page dynamique et doit être analysée par jsjs.

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:43:53

    Le navigateur dispose d'un mécanisme de tolérance aux pannes et corrigera les balises HTML non standard, de sorte que la structure de page que vous voyez dans la console peut être différente de la structure de page que vous demandez à l'aide du code.
    Solution :
    Perdez la portée du sélecteur
    Utilisez la classe pour localiser
    Les points d'arrêt dans le code et exécutez en une seule étape pour localiser la règle XPath de cette balise

    répondre
    0
  • 黄舟

    黄舟2017-04-17 17:43:53

    J'utilise habituellement bs4, qui est une solution stupide. Vous pouvez également utiliser des règles régulières, mais c'est casse-tête

    .
    img_tag = soup.find('img', attrs=dict(class="js-refreshCaptcha captcha") )
    img_tag_src = img_tag['src']

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:43:53

    captchaUrl = ''.join(response.xpath("//img[@class='js-refreshCaptcha captcha']/@src").extract())
    

    répondre
    0
  • Annulerrépondre