为什么用了"selenium",页面不下去了?
Why did use "selenium" and the page did not go down?
为什么使用"webdriver.PhantomJS"页面没有向下滚动?
我正在抓取 Twitter 网站。
(我们不使用api的原因是为了获取过去的数据。)
但是页面没有向下滚动,所以我无法获取更多推文。
怎么了?我该如何修复此代码?
另外,不知道第几页结束了
我认为您不应该指定一个数字来获取所有内容。
(因为我无法获取所有数据)。
for _ in range(50):
body.send_keys(Keys.PAGE_DOWN)
有什么好的方法吗?
下面的代码是我运行的完整代码。
#py3
import requests
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.PhantomJS('C:\phantomjs-2.1.1-windows/bin/phantomjs')
base_url = u'https://twitter.com/search?l=&q=money%20since%3A2017-07-18%20until%3A2017-07-20&src=typd&lang=ko'
url = base_url
browser.get(url)
time.sleep(1)
body = browser.find_element_by_tag_name('body')
for _ in range(50):
body.send_keys(Keys.PAGE_DOWN)
time.sleep(0.2)
tweets=browser.find_elements_by_class_name('tweet-text')
wfile = open("money.txt", mode='w', encoding='utf8')
data={}
i = 1
for tweet in tweets:
data['text'] = tweet.text
print(i, ":", data)
wfile.write(str(data) +'\n')
i += 1
wfile.close()
您可以使用 browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
滚动到网页末尾。这是您要实现的目标吗?
要使用它,您需要在抓取推文之前滚动。例如,将您的第一个 for 循环替换为:
for _ in range(50):
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(0.2)
此外,这只是第二个循环的提示。您可以使用 enumerate:
而不是在循环外跟踪 i
for i, tweet in enumerate(tweets):
data['text'] = tweet.text
print(i, ":", data)
wfile.write(str(data) +'\n')
为什么使用"webdriver.PhantomJS"页面没有向下滚动?
我正在抓取 Twitter 网站。
(我们不使用api的原因是为了获取过去的数据。)
但是页面没有向下滚动,所以我无法获取更多推文。
怎么了?我该如何修复此代码?
另外,不知道第几页结束了
我认为您不应该指定一个数字来获取所有内容。 (因为我无法获取所有数据)。
for _ in range(50):
body.send_keys(Keys.PAGE_DOWN)
有什么好的方法吗?
下面的代码是我运行的完整代码。
#py3
import requests
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.PhantomJS('C:\phantomjs-2.1.1-windows/bin/phantomjs')
base_url = u'https://twitter.com/search?l=&q=money%20since%3A2017-07-18%20until%3A2017-07-20&src=typd&lang=ko'
url = base_url
browser.get(url)
time.sleep(1)
body = browser.find_element_by_tag_name('body')
for _ in range(50):
body.send_keys(Keys.PAGE_DOWN)
time.sleep(0.2)
tweets=browser.find_elements_by_class_name('tweet-text')
wfile = open("money.txt", mode='w', encoding='utf8')
data={}
i = 1
for tweet in tweets:
data['text'] = tweet.text
print(i, ":", data)
wfile.write(str(data) +'\n')
i += 1
wfile.close()
您可以使用 browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
滚动到网页末尾。这是您要实现的目标吗?
要使用它,您需要在抓取推文之前滚动。例如,将您的第一个 for 循环替换为:
for _ in range(50):
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(0.2)
此外,这只是第二个循环的提示。您可以使用 enumerate:
而不是在循环外跟踪 ifor i, tweet in enumerate(tweets):
data['text'] = tweet.text
print(i, ":", data)
wfile.write(str(data) +'\n')