是否可以使用for循环搜索与某个短语对应的标签文本。我一直在尝试创建这个循环,但并没有一直没有工作。任何帮助表示赞赏谢谢!这是我的代码:
def parse_page(self, response):
titles2 = response.xpath('//div[@id = "mainColumn"]/h1/text()').extract_first()
year = response.xpath('//div[@id = "mainColumn"]/h1/span/text()').extract()[0].strip()
aud = response.xpath('//div[@id="scorePanel"]/div[2]')
a_score = aud.xpath('./div[1]/a/div/div[2]/div[1]/span/text()').extract()
a_count = aud.xpath('./div[2]/div[2]/text()').extract()
c_score = response.xpath('//a[@id = "tomato_meter_link"]/span/span[1]/text()').extract()[0].strip()
c_count = response.xpath('//div[@id = "scoreStats"]/div[3]/span[2]/text()').extract()[0].strip()
info = response.xpath('//div[@class="panel-body content_body"]/ul')
mp_rating = info.xpath('./li[1]/div[2]/text()').extract()[0].strip()
genre = info.xpath('./li[2]/div[2]/a/text()').extract_first()
date = info.xpath('./li[5]/div[2]/time/text()').extract_first()
box = response.xpath('//section[@class = "panel panel-rt panel-box "]/div')
actor1 = box.xpath('./div/div[1]/div/a/span/text()').extract()
actor2 = box.xpath('./div/div[2]/div/a/span/text()').extract()
actor3 = box.xpath('./div/div[3]/div/a/span/text()').extract_first()
for x in info.xpath('//li'):
if info.xpath("./li[x]/div[1][contains(text(), 'Box Office: ')/text()]]
box_office = info.xpath('./li[x]/div[2]/text()')
else if info.xpath('./li[x]/div[1]/text()').extract[0] == "Runtime: "):
runtime = info.xpath('./li[x]/div[2]/time/text()')
答案 0 :(得分:0)
您的for
循环完全错误:
1.您正在使用info.
但是从根
for x in info.xpath('.//li'):
2。 x
是一个HTML节点元素,您可以这样使用它:
if x.xpath("./div[1][contains(., 'Box Office: ')]"):
box_office = x.xpath('./div[2]/text()').extract_first()
答案 1 :(得分:0)
我认为你可能需要 re()或 re_first()来匹配某个词组。
例如:
elif info.xpath('./li[x]/div[1]/text()').re_first('Runtime:') == "Runtime: "):
runtime = info.xpath('./li[x]/div[2]/time/text()')
你需要修改你的for循环,因为变量x实际上是一个Selector而不是一个数字,所以这样使用它是不对的:li [x]。
最后一个答案中的gangabass对此提出了一个很好的观点。