<img class="js-refreshCaptcha captcha" width="120" height="30" data-tip="s$t$看不清楚?换一张" alt="验证码" src="/captcha.gif?r=1462431202340&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属性无法获取?
你想幹啥,抓取到的html進行過濾嗎?可以考慮正規查找
chrome有個工具叫xpath-helper,可以去應用程式商店下載,這樣就可以用這個工具來檢查你的xpath語法是否正確了。
另外如果語法正確,但是在程式中提取不到,這時就要考慮原網頁是動態頁面,需要用到jsjs解析了。
瀏覽器有容錯機制,對於不規範的html標籤,會進行修正,所以你在控制台看到的頁面結構,和你用程式碼請求到的頁面結構可能是不一樣的。
解:
把選擇器的範圍放的鬆一點
使用class去定位
在程式碼中打斷點,單步執行去定位這個標籤的xpath規則
我通常使用bs4, 無腦解決. 用正則也行,但是傷腦
雷雷