首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取href抓取,但不提取

提取href抓取,但不提取
EN

Stack Overflow用户
提问于 2013-07-25 20:29:50
回答 1查看 2.2K关注 0票数 1

我使用selenium和scrapy导航到数据表,并希望提取到csv文件的链接/href。到目前为止,我尝试过的一切似乎都没有效果,我不知道该尝试什么,也不知道如何获得链接。

下面是我试图从表中提取链接/href的重要部分:

代码语言:javascript
复制
<tr class="even">

<td class="paddingColumnValue"> </td>

<td class="nameColumnValue"><a href="/m/app?service=external/sdata_details&sp=12812" class="sdata" title="Click here for additional details.">click</a></td>

<td class="amountColumnValue">$600,000.00</td>

<td class="myListColumnValue"><a href="" onclick="doMyListButton(this.firstChild.getAttribute('src'),this.name);myListHandler(this.name);return false;"  önmouseover="return true" name="12812"><img src="/m/images/add.gif" border="0" title="Click to add this to your list" name="A12812"></a></td>


</tr>

我得到的最接近实际获取数据的代码是.(注表id = search_results)

代码语言:javascript
复制
import time
from scrapy.item import Item, Field
from selenium import webdriver
from scrapy.spider import BaseSpider
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector

class ElyseAvenueItem(Item):
    link = Field()

class ElyseAvenueSpider(BaseSpider):
    name = "elyse"
    allowed_domains = ["domain.com"]
    start_urls = [
'http://www.domain.com']

def __init__(self):
    self.driver = webdriver.Firefox()

def parse(self, response):
    self.driver.get(response.url)
    el1 = self.driver.find_element_by_xpath("//*[@id='headerRelatedLinks']/ul/li[5]/a")
    el1.click()
    time.sleep(2)
    el2 = self.driver.find_element_by_xpath("/html/body/form/table/tbody/tr[2]/td[2]/table/tbody/tr/td[3]/p[3]/a[1]")
    if el2:
        el2.click()
        time.sleep(2)
    el3 = self.driver.find_element_by_xpath("/html/body/form/table/tbody/tr[2]/td[2]/table[1]/tbody/tr/td[3]/a")
    if el3:
        el3.click()
        time.sleep(20)


        titles = self.driver.find_elements_by_class_name("sdata")
        items = []
        for titles in titles:
            item = ElyseAvenueItem()
            item ["link"] = titles.find_element_by_xpath("//*[@id='search_results']/tbody/tr[2]/td[2]/a")
            items.append(item)
            return item

输出到csv: selenium.webdriver.remote.webelement.WebElement对象0x03F16E90

谢谢你的帮助。我可以张贴更多的我的尝试和他们的输出,如果这将有帮助。就像我说的,我需要的是href,我就是想不出该怎么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-25 21:39:52

您正在抓取selenium webelement实例,而不是它的文本。取代:

代码语言:javascript
复制
item ["link"] = titles.find_element_by_xpath("//*[@id='search_results']/tbody/tr[2]/td[2]/a")

使用

代码语言:javascript
复制
link = titles.find_element_by_xpath("//*[@id='search_results']/tbody/tr[2]/td[2]/a")
item ["link"] = link.get_attribute('href')

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17868164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档