【发布时间】:2021-01-07 06:17:07
【问题描述】:
我正在尝试从 sharechat.com 抓取帖子数据(喜欢、分享、图像等),但问题是我无法找到使用 Selenium 的帖子的图像 URL,因为我怀疑它使用 Javascript 来填充它。
我尝试使用 Selenium 来查找最外层的 HTML(显示的 HTML),并且我获得了所有其他帖子信息,例如喜欢的数量、分享、cmets 等,但我无法获取存储图像,因为我找不到它的网址。
我这样做是为了进行情绪分析和推荐趋势的社交网络研究,所以我希望将帖子数据连同标签和喜欢、分享的数量等一起抓取。我只是在抓取图像的标签和 URL 时失败了.
Here 是您需要运行的 geckodriver 文件。
这里是my code:
import sys
import csv
import os
import time
import urllib
import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
serviceurl = 'https://sharechat.com/trending/Hindi'
files = "dataset_link_1.txt"
if not os.path.exists(files):
file(files, 'w').close()
enter = open(files,'w');
url = serviceurl
driver = webdriver.Firefox(executable_path='D:\CHIT CHAT\Scrapper\geckodriver');
driver.maximize_window() #For maximizing window
driver.get(url);
driver.implicitly_wait(3) #gives an implicit wait for 10 seconds
while driver.execute_script("return document.readyState") != 'complete':
pass;
for i in range(1,20):
SCROLL_PAUSE_TIME = 0.5
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
var = driver.find_element_by_xpath("/html/body/div/div[1]/div/main/div[1]/div[2]/div/section/div[%s]/div/div/a/div[3]/div[1]"%(i)).text.encode('utf-8')
print(var) #No of watches
enter.write("Total No of views:\n%s\n" %(var));
var = driver.find_element_by_xpath("/html/body/div/div[1]/div/main/div[1]/div[2]/div/section/div[%s]/div/div/a/div[1]/div[1]/span"%(i)).text.encode('utf-8')
print(var) #Title
enter.write("Title:\n%s\n" %(var));
var = driver.find_element_by_xpath("/html/body/div/div[1]/div/main/div[1]/div[2]/div/section/div[%s]/div/div/div[1]/a/div[2]/div/div[2]"%(i)).text.encode('utf-8')
print(var) #owner bio
enter.write("Writer's Bio:\n%s\n" %(var));
var = driver.find_element_by_xpath("/html/body/div/div[1]/div/main/div[1]/div[2]/div/section/div[%s]/div/div/div[1]/a/div[2]/div/div[1]/strong"%(i)).text.encode('utf-8')
print(var) #owner's bio
enter.write("Writer's Name:\n%s\n" %(var));
var = driver.find_element_by_xpath("/html/body/div/div[1]/div/main/div[1]/div[2]/div/section/div[%s]/div/div/div[2]/div/button[2]/div/span"%(i)).text.encode('utf-8')
print(var) #comments
enter.write("Total Comments:\n%s\n" %(var));
var = driver.find_element_by_xpath("/html/body/div/div[1]/div/main/div[1]/div[2]/div/section/div[%s]/div/div/div[2]/div/button[1]/div/span"%(i)).text.encode('utf-8')
print(var) #whatsapp
enter.write("Whatsapp Share:\n%s\n" %(var));
print()
# driver.save_screenshot("captcha_%s.png"%(i))
driver.back()
driver.quit()
enter.close()
【问题讨论】:
-
欢迎来到 SO。你能分享一下你试过的鳕鱼和你得到的错误吗?
-
@supputuri 感谢您的热烈欢迎 :) 这是我到目前为止编写的代码,没有错误,因为我所做的任何事情似乎都没有获取后期图像的 URL。 ideone.com/ZzESLQ
标签: python selenium selenium-webdriver web-scraping