网络爬虫实战3-某网站top10推荐文章抓取(05)
摘要:笔者前技术贴的抓取技巧都是用于不需要登录就可以抓取信息的网站。对于需要登录之后才能查看信息的网站,一般有两种方法,可以使用requests库发送post请求完成登录,也可以使用selenium库操作浏览器完成登录。本文展示selenium库的使用。
00 导入相关库
import time
from bs4 import BeautifulSoup
from selenium import webdriver
01 使用Firefox作为Selenium的操作浏览器
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
caps=webdriver.DesiredCapabilities().FIREFOX
caps['marionette']=False
binary=FirefoxBinary(r'D:\Mozilla Firefox\firefox.exe')
dri=webdriver.Firefox(firefox_binary=binary,capabilities=caps)
02 登录网站(输入用户名和密码,点击登录)
url='https://account.jishulink.com/login'
dri.get(url)
time.sleep(2)
dri.find_element_by_css_selector("input[ng-model='telephone']").clear()
dri.find_element_by_css_selector("input[ng-model='telephone']").send_keys('xxxxx')
time.sleep(0.2)
dri.find_element_by_css_selector("input[ng-model='password']").clear()
dri.find_element_by_css_selector("input[ng-model='password']").send_keys('xxxxx')
time.sleep(0.2)
dri.find_element_by_css_selector("input[ng-click='login()']").click()
time.sleep(5)
03 抓取信息
html=dri.page_source
soup=BeautifulSoup(html,'lxml')
tlist=soup.find_all('div',class_='dynamic-content')
tt=[]
for ti in tlist:
tt.append(ti.find('div',class_='idtop-info').a.string.strip())
结果如下;