0

lxmlとmechanizeを使用してWebサイトをスクラップしようとしていますが、エラーが発生しました。

AttributeError:'NoneType'オブジェクトに属性'xpath'がありません

いくつかのチェックの後、私htmlはNoneが返されたことを発見しました。

面白い部分は、このコードは他のWebサイトで機能し、この特定のWebサイト(http://www.selangortimes.com)では機能しなかったことです。

url = 'http://www.selangortimes.com'
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_refresh(False)
br.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
br.open(url)
resp = br.response()
html = lxml.html.parse(resp).getroot()
link_targets = [link.attrib.get('href') for link in html.xpath(expr)]

あなたの助けに感謝 :)

更新: 上記のコードを使用した動作中のWebサイトの例-http ://www.themalaysianinsider.com

4

1 に答える 1

1

lxml2.3.6mechanize0.2.5を使用して、投稿したコードの次のわずかに改訂されたバージョンは、 URLの要素内のすべてのhref属性のリストを生成します。あなたがしなければならないあなたの最新のコメントに関する注意<a>http://www.selangortimes.comimport lxml.html

import mechanize
import lxml.html

url = 'http://www.selangortimes.com'
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_refresh(False)
br.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
br.open(url)
resp = br.response()
html = lxml.html.parse(resp).getroot()
link_targets = [link.attrib.get('href') for link in html.xpath('//a')]
print(link_targets)
于 2012-10-05T20:25:38.890 に答える