我正在尝试从以下链接中提取.jpg图像的链接:https://asheville.craigslist.org/search/sss
如果您看起来嵌套在节点中,则有一些节点包含我需要提取的链接。
我是scrapy和xpath的新手,除了空列表之外我似乎无法获得任何回报。
我已经尝试了很多种类的代码而没有任何运气:
response.xpath('//*[@id="sortable-results"]/ul/li/a/img/')
答案 0 :(得分:0)
似乎数据隐藏在<a>
个节点data-ids
属性中,稍后通过javascript解压缩到图片库中。
<a href="/cto/6095960745.html" class="result-image gallery"
data-ids="1:01414_7WJQELsYuex,1:00t0t_kxF99J8uXmP,1:00S0S_dgnLA6FvDKX,1:00404_kTP1mB2Flpb,1:00P0P_j5On1SCHLuP,1:00a0a_jZYNazvdTgo,1:00Y0Y_9HJf6UJJVg7,1:00p0p_loCrLMXpS5s,1:00k0k_3e296xxBfXi,1:00f0f_5QpRYaBnIK7,1:00e0e_aZTOihYtz9C,1:00c0c_iatoB70CmWg,1:00X0X_dwt0ZbxYJNC,1:00k0k_k3dPBZpN9KM,1:00W0W_f51jQcPO86R">\n
<span class="result-price">$1700</span>\n </a>
我们可以通过提取id然后格式化我们自己的图片网址来对此进行反向工程:
ids = response.xpath("//a[@class='result-image gallery']/@data-ids").extract()
ids = ''.join(ids).split(',') # all of ids are separeted by comma
template = "https://images.craigslist.org/{}_300x300.jpg"
for img_id in ids:
# e.g. 1:00G0G_anZn4IdI4pK'
# we want to get rid of 1: part
img_id = img_id.split(':')[-1]
url = template.format(image id)
print(url)
答案 1 :(得分:0)
尝试实施以下XPath
表达式以获取图像源链接:
//div[@id="sortable-results"]//img/@src