请问为什么这个代码只能爬取每一页的第一条评论啊?是循环有什么问题吗?求解。
def drag_code(self):
time.sleep(0.5) #在执行查询之前,加一个延时time.sleep(0.5) #在执行查询之前,加一个延时
image_info = self.track.get_image()
all_comments = [] #所有评论
xingji = []
shijian = []
zp_time = []
tp_ner = []
zhichi = []
huifu = []
for i in range(13):
for j in range(1,11):
all_comments.append(browser.find_element(By.XPATH, "//div[@class = 'commentList']/div[@class = 'commentItem']/div[@class = 'contentInfo']/div[@class='commentDetail']".format(j)).text)
xingji.append(browser.find_element(By.XPATH, "//div[@class = 'commentList']/div[@class = 'commentItem']/div[@class = 'contentInfo']/div[@class = 'scroreInfo']/span[@class = 'averageScore']".format(j)).text)
shijian.append(browser.find_element(By.XPATH, "//div[@class = 'commentList']/div[@class = 'commentItem']/div[@class = 'contentInfo']/div[@class = 'commentFooter']/div[@class='commentTime']".format(j)).text)
bot = browser.find_element(By.XPATH, "//div[@class = 'poiDetailPage']/div[@class = 'moduleWrap']/div[@class = 'mainModule']/div[@class = 'commentModuleRef']/div[@class = 'commentModule normalModule']/div[@class = 'myPagination']/ul[@class = 'ant-pagination']/li[@class = ' ant-pagination-next']/span[@class = 'ant-pagination-item-comment']")
browser.execute_script("arguments[0].click();",bot)#通过XPath定位败#浏览器执行脚本
time.sleep(2)#使当前正在执行的Python程序进入睡眠或延迟几秒钟。
browser.implicitly_wait(3)#浏览器隐式等待 3
print(i)
根据代码片段,您的问题可能出现在XPath表达式上。您在获取评论列表的Xpath表达式中使用了.format(j),但是您并没有在字符串中使用花括号来表示要替换的值。因此,.format(j)部分被忽略了,只使用了原始的XPath表达式。
正确的XPath表达式应该包含一个花括号,用于表示要替换的值。例如,您可以这样修改XPath表达式:
"//div[@class='commentList']/div[@class='commentItem'][{0}]/div[@class='contentInfo']/div[@class='commentDetail']"
然后,在获取评论文本时,使用以下代码:
for j in range(1,11):
xpath = "//div[@class='commentList']/div[@class='commentItem'][{0}]/div[@class='contentInfo']/div[@class='commentDetail']".format(j)
all_comments.append(browser.find_element(By.XPATH, xpath).text)
同样地,您还需要相应地修改其他XPath表达式,以确保它们包含花括号并使用正确的值进行替换。
希望这可以帮助您解决问题。
不知道你这个问题是否已经解决, 如果还没有解决的话:我们将从裁剪图像开始。当要裁剪图像时,需要一个区域来定义要裁剪的区域。我们来编码吧!
image = Image.open("tux.jpg") box = (250, 200, 550, 600) cropped = image.crop(box) cropped.show()
我们已经开张了Tux.jpg作为第一种情况,当我们裁剪图像时,框是要使用的区域。作为最后一次,我们将该框作为参数传递给作物()方法。您可能会得到这样的输出:
转存失败
重新上传取消