我想通过属性识别某些网址,但如果感兴趣的属性是外来字符会怎么样?

时间:2015-10-18 04:36:25

标签: xpath encoding scrapy

我想使用Scrapy递归地抓取数据 - 在下一个页面之后从一个页面中删除数据。我的蜘蛛需要按照"下一页"按钮。原则上,"下一页"网址可以由response.xpath("a[@title = 'next page']")标识。然而,由于网站是中文(http://bxt.harbin.gov.cn/hrb_bzbxt/list_hf.php),我使用的选择器命令是response.xpath("a[@title = '下一页']")。下一页的意思是"下一页。"这不起作用,错误消息是" ValueError:所有字符串必须是XML兼容的:Unicode或ASCII,没有NULL字节或控制字符。"网站的编码是gbk。那么如何选择"下一页"这个中文网站的网址?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

尝试使用unicode代码点表示“下一页”(即'u'\ u4e0b \ u4e00 \ u9875'),如下所示:

next_page_link = response.xpath(u'//a[@title="\u4e0b\u4e00\u9875"]/@href')
if next_page_link: yield Request(next_page_link.extract()[0])

答案 1 :(得分:0)

@添加到意味着属性-Try below -

response.xpath("//a[@title = '下一页']")

您可能需要以unicode获取响应,详细信息here