广州凡科互联网科技有限公司

营业时间
MON-SAT 9:00-18:00

全国服务热线
18720358503

公司门店地址
广州市海珠区工业大道北67号凤凰创意园

selenium中有关电脑鼠标下降window.scrollTo方式知乎问

日期:2021-03-10 浏览:


时尚博主帮一个朋友做毕业论文,要剖析知乎问答的问与答数据信息,数据信息量很少,因而简易用selenium中有关电脑鼠标下降window.scrollTo方式抓取了知乎问答的‘’抑郁症症“专题讲座有关问与答

一、python开始引进的控制模块


import requests,json,random

try:
   import cookielib
except:
   import http.cookiejar as cookielib
import os.path
try:
   from PIL import Image
except:
   pass
import time,csv,xml,re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options # 从options控制模块中启用Options类
from mon.keys import Keys
from bs4 import BeautifulSoup

chrome_options = Options() # 案例化Option目标
chrome_options.add_argument( --headless ) # 把Chrome访问器设定为默然方式
driver = webdriver.Chrome() # 设定模块为Chrome,在后台管理默默地运作#options = chrome_options



二、知乎问答python登录认证
# # 结构 Request headers
# 从配备表获得
ua_list = [
        Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3510.2 Safari/537.36 ,
        Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.108 Safari/537.36 2345Explorer/8.8.3.16721 ,
        Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6 ,
        Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/ K-Ninja/2.1.1 ,
        Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/ Firefox/3.0 Kapiko/3.0 ,
        Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6 ,
        Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52 ,
        Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/ Firefox/45.0 ,
        Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) ,
        Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/ Firefox/52.0 ,
        Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1) ,
        Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) ,
        Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0) ,
   ]
ua = random.choice(ua_list)
headers = {

    Host : ,

    Referer : topic//hot ,

    User-Agent : str(ua)
}
#代理商ip
代理商ip  json文件格式的url
url_ip=
resp = requests.get(url=url_ip)
proxies_list=[]
if resp.status_code == 200:
   data_json = resp.json()
   for d in data_json[ obj ]:
       port = d[ port ]
       ip = d[ ip ]
       full_ip = ip + : + port
       dict ={ http :full_ip}
       proxies_list.append(dict)
proxies ,
    User-Agent : Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 ,
}
# 应用登陆cookie信息内容

session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename=cookie_file)

try:
   session.cookies.load(ignore_discard=True)
except:
   print( Cookie 无法载入 )


def get_xsrf():
    _xsrf 是一个动态性转变的主要参数

   index_url = //captcha.gif?r= + t + type=login

   r = session.get(captcha_url, headers=header)

   with open( captcha.jpg , wb ) as f:

       f.write(r.content)

       f.close()

   # 用pillow 的 Image 显示信息认证码

   # 假如沒有安裝 pillow 到源码所属的文件目录去寻找认证码随后手动式键入

   try:

       im = Image.open( captcha.jpg )

       im.show()

       im.close()

   except:

       print(u 请到 %s 文件目录寻找captcha.jpg 手动式键入 % os.path.abspath( captcha.jpg ))

   captcha = input( please input the captcha\n )

   return captcha

def isLogin():
   # 根据查询客户本人信息内容来分辨是不是早已登陆

   url = settings/profile

   login_code = session.get(url, headers=header, allow_redirects=False).status_code

   if login_code == 200:

       return True

   else:

       return False

def login(secret, account):
   # 根据键入的客户名分辨是不是是手机上号

   if re.match(r ^1\d{10}$ , account):

       print( 手机上号登陆 \n )

       post_url = login/phone_num

       postdata = {
            _xsrf : get_xsrf(),

            password : secret,

            remember_me : true ,

            phone_num : account,

       }

   else:

       if @ in account:

           print( 电子邮箱登陆 \n )

       else:

           print( 你的账户键入不太好,请再次登陆 )

           return 0

       post_url = login/email

       postdata = {

            _xsrf : get_xsrf(),

            password : secret,

            remember_me : true ,

            email : account,

       }

   try:

       # 不用认证码立即登陆取得成功

       login_page = session.post(post_url, data=postdata, headers=login_code = eval(login_page.text)


   cookie_path = cookie_file
   session.cookies.save(cookie_path)
# try:
#     input = raw_input
# except:
#     pass
##将首页面的客户提出问题print到shell上

def getpage(url2):
   mainpage = session.get(url2, headers=header)

   soup = BeautifulSoup(mainpage.text, html.parser )

   tags = soup.find_all( a , class_= question_link )

   # print tags

def get_login_cookie(url):
   
   获得储存cookie
   :param url:
   :return:
   

   if not os.path.exists(cookie_file):
       # account = input( 请键入你的客户名\n   )
       # secret = input( 请键入你的登陆密码\n   )
       user_name = account
       passwd = secret
       login(passwd, user_name)
   try:
       cookie_jar = cookielib.LWPCookieJar(cookie_file)
       cookie_jar.load(ignore_discard=True, ignore_expires=True)
       print( Load eeded )
   except cookielib.LoadError:
       return None
   else:
       cookie_d = {}
       for cookie in cookie_jar:
           domain = cookie.domain
           if url.find(domain) 0:
               cookie_d[cookie.name] = cookie.value
       return cookie_d

if __name__ == __main__ :

   if isLogin():

       print( 您早已登陆 )

       url2 = pre>三、window.scrollTo方式获得网页页面数据信息
url= topic//questions 
driver.get(url)
time.sleep(3)

while True:

   res =driver.page_source
   html =BeautifulSoup(res, html.parser )
   items= html.find_all( div ,class_= List-item TopicFeedItem )
   driver.execute_script( window.scrollTo(0,) )
   print(len(items))

# 分辨数据信息文档 总数必须是多少数据信息 就分辨多少钱
   if len(items) =2000:

       break


四、python收集数据信息(数据信息收集一部分,时尚博主太懒了,沒有装包涵数,由于收集小量数据信息,沒有scrapy架构或是用gevent和queue多段程合谐程网络爬虫去做,假如有必须事后能够自身去装包)

# 最后网页页面 selenium driver方式获得

res = driver.page_source
html = BeautifulSoup(res, html.parser )
items = html.find_all( div , class_= List-item TopicFeedItem )
for item in items:
   # excel =[]
   # title = item.find( h2 ).text
   # content =item.find( div ,class_= RichContent-inner ).text
   url1= + item.find( h2 span >
   driver.get(url1)
   res = driver.page_source
   html = BeautifulSoup(res, html.parser )
   # 太懒了下边一部分沒有装包称涵数,自主装包
   #问章


新闻资讯

联系方式丨CONTACT

  • 全国热线:18720358503
  • 传真热线:18720358503
  • Q Q咨询:2639601583
  • 企业邮箱:2639601583@qq.com

首页
电话
短信
联系