selenium爬取人民微博

本文介绍如何使用Selenium模拟登录网站,并通过PhantomJS或Firefox进行网页爬取。主要内容包括利用XPath定位元素实现自动登录,以及通过查找类名获取微博内容。此外还介绍了页面滚动、隐式等待和翻页等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

selenium可以模拟登陆网页,爬取时可以应用phanTomjs(无页面浏览器),为了便于观察,下面我会应用两种方法:
# driver = webdriver.PhantomJS(executable_path='E:\APP\phantomjs-2.1.1-windows\\bin\phantomjs.exe')
driver=webdriver.Firefox()

注释掉的部分为无页面浏览器登录,下面为火狐浏览器登录,二者的不同点就是无页面浏览器需要注明路径,但在爬取过程中使用火狐浏览器更易于观察。

loginurl='http://t.people.com.cn/indexV3.action'
driver.get(loginurl)
driver.find_element_by_xpath('//*[@id="userName"]').send_keys("账号")
driver.find_element_by_xpath('//*[@id="password_text"]').send_keys("密码")

这里面用到了xpath的相对路径的书写。(有一个简便方法查找固定元素的xpath(* ̄︶ ̄*)o)单击鼠标右键,选择复制,选择xpath就可以得到它的绝对路径啦。
当然,相对路径还得自己书写╭(╯^╰)╮。

爬取微博内容:
driver.find_elements_by_class_name('list_item')

滚动条滑动到底部:
for i in range(4):
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

一般来说滚动条最多滚动三次。。

隐式等待,应用于页面无法瞬间加载的时候:
driver.implicitly_wait(50)

点击下一页:
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div[6]/div/a[10]').click()

实现了翻两页emmmm……
完整代码如下:
#coding:utf-8
import time
from selenium import webdriver
user_agent = 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
headers = {'User-Agent': user_agent}
# driver = webdriver.PhantomJS(executable_path='E:\APP\phantomjs-2.1.1-windows\\bin\phantomjs.exe')
driver=webdriver.Firefox()
driver.maximize_window()
loginurl='http://t.people.com.cn/indexV3.action'
driver.get(loginurl)
driver.find_element_by_xpath('//*[@id="userName"]').send_keys("18133591951")
driver.find_element_by_xpath('//*[@id="password_text"]').send_keys("87654321.")
driver.find_element_by_xpath("/html/body/div[3]/div[2]/div[2]/div[2]/form/div[4]/input").click()
driver.find_element_by_xpath('/html/body/div[2]/div/div[3]/a[2]').click()
driver.find_element_by_xpath('/html/body/div[2]/div/a[1]').click()
 for k in range(2):
    for j in range(4):
         m = driver.find_elements_by_class_name('list_item')
         for i in m:
             print i.text
         driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
         driver.implicitly_wait(50)
     driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div[6]/div/a[10]').click()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值