【发布时间】:2021-10-04 22:20:25
【问题描述】:
您好,我正在使用 srapy 抓取网站 https://www.centralbankofindia.co.in,我收到了回复,但通过 XPath 查找地址时,我没有收到任何回复
start_urls = [
"https://www.centralbankofindia.co.in/en/branch-locator?field_state_target_id=All&combine=&page={}".format(
i
)
for i in range(0, 5)
]
brand_name = "Central Bank of India"
spider_type = "chain"
# //*[@id="block-cbi-content"]/div/div/div/div[3]/div/table/tbody/tr[1]/td[2]/div/span[2]
# //*[@id="block-cbi-content"]/div/div/div/div[3]/div/table/tbody/tr[2]/td[2]/div/span[2]
# //*[@id="block-cbi-content"]/div/div/div/div[3]/div/table/tbody/tr[3]/td[2]/div/span[2]
def parse(self, response, **kwargs):
"""Parse response."""
# print(response.text)
for id in range(1, 11):
address = self.get_text(
response,
f'//*[@id="block-cbi-content"]/div/div/div/div[3]/div/table/tbody/tr[{id}]/td[2]/div/span[2]',
)
print(address)
def get_text(self, response, path):
sol = response.xpath(path).extract_first()
return sol
网站中地址的span类没有唯一的id,是什么原因造成的?
【问题讨论】:
-
这个页面似乎使用 JavaScript 添加元素,但
scrapy无法运行 JavaScript,您可能需要 Selenium 来控制可以运行 JavaScript 的真实网络浏览器。甚至还有模块scrapy-selenium -
或者你应该使用更少的标签但更多的类 - 和
//跳过一些标签。您还应该检查原始 HTML,因为 DevTools 中的某些浏览器可能会显示tbody,但 HTML 可能没有。
标签: python web-scraping scrapy