我试图刮一个网站与scrapy-selenium。我面临着两个问题
1.我在chrome开发工具上应用了xpath,我找到了所有元素,但在执行代码后,它只返回一个选择器对象。
- xpath表达式的text()函数返回无。
这是我试图刮的URL:http://www.atab.org.bd/Member/Dhaka_Zone
下面是检查器工具的屏幕截图:
下面是我的代码:
# -*- coding: utf-8 -*-
import scrapy
from scrapy.selector import Selector
from scrapy_selenium import SeleniumRequest
from selenium.webdriver.common.keys import Keys
class AtabDSpider(scrapy.Spider):
name = 'atab_d'
def start_requests(self):
yield SeleniumRequest(
url = "https://www.atab.org.bd/Member/Dhaka_Zone",
#url = "https://www.bit2lead.com",
#wait_time = 15,
wait_time = 3,
callback = self.parse
)
def parse(self, response):
companies = response.xpath("//ul[@class='row']/li")
print("Numbers Of Iterable Item: " + str(len(companies)))
for company in companies:
yield {
"company": company.xpath(".//div[@class='card']/div[1]/div/a/h3[@data-bind='text: NameOfOrganization']/text()").get()
#also tried
#"company": company.xpath(".//div[@class='card']/div[1]/div/a/h3/text()").get()
}
下面是我的终端屏幕截图:
这是网址:(https://www.algoslab.com)我之前练习过效果不错,虽然很简单。
2条答案
按热度按时间zbwhf8kr1#
你为什么不直接尝试像下面这样,让一切都在一眨眼的功夫:
输出如下所示(应生成3160行结果):
bf1o4zei2#
可以将所需的xpath简化为
//h3[@data-bind='text: NameOfOrganization']
,以选择元素,然后查看文本