我正在尝试抓取wordreference
,但我没有成功。
我遇到的第一个问题是,通过JavaScript
加载了一个很大的部分,但这不是问题,因为我可以在源代码中看到我需要的东西。
因此,例如,我想提取给定单词的前两个含义,所以在此网址中:http://www.wordreference.com/es/translation.asp?tranword=crane
我需要提取grulla
和grúa
。
这是我的代码:
import lxml.html as lh
import urllib2
url = 'http://www.wordreference.com/es/translation.asp?tranword=crane'
doc = lh.parse((urllib2.urlopen(url)))
trans = doc.xpath('//td[@class="ToWrd"]/text()')
for i in trans:
print i
结果是我得到一个空列表。
我试图用scrapy抓它,但没有成功。我不知道发生了什么,我能够抓取它的唯一方法就是使用curl
,但这是一个特殊的方法,我想用优雅的方式用Python做。
非常感谢
答案 0 :(得分:1)
您似乎需要发送User-Agent
标头,请参阅Changing user agent on urllib2.urlopen。
此外,只需切换到requests
即可(默认情况下会自动发送python-requests/version
用户代理):
import lxml.html as lh
import requests
url = 'http://www.wordreference.com/es/translation.asp?tranword=crane'
response = requests.get("http://www.wordreference.com/es/translation.asp?tranword=crane")
doc = lh.fromstring(response.content)
trans = doc.xpath('//td[@class="ToWrd"]/text()')
for i in trans:
print(i)
打印:
grulla
grúa
plataforma
...
grulla blanca
grulla trompetera