澳门网络娱乐游戏平台-澳门电子游戏娱乐网址-官方直营

Python使用Selenium模块模拟浏览器抓取不闻不问鱼直播间消息示例

import urllib
import urllib2
HEADER = {
 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
 'Referer' : 'http://202.206.1.163/logout.do'
}
POSTDATA = {
 'data1': 'value1',
 'data2': 'value2'
}
HOSTURL = 'http://xxx.com'
enpostdata = urllib.urlencode(POSTDATA)
urlrequest = urllib2.Request(hosturl,enpostdata,HEADER)
urlresponse = urllib2.urlopen(urlrequest)
print urlresponse.read()

实际请参见:

正文实例陈说了Python使用Selenium模块模拟浏览器抓取麻木不仁鱼直播间音讯。分享给大家供我们参照他事他说加以考察,具体如下:

#filename: test.py
from analogop import geturlopen
postd = {
 'usernum': '2011411111',
 'upw': '124569',
 'userip': '192.168.10.1',
 'token': 'xxx'
}
urlread = geturlopen('http://127.0.0.1:8000/login/', postd)
print urlread.read().decode('utf-8')
urlread = geturlopen('http://127.0.0.1:8000/chafen/', {})
print urlread.read().decode('utf-8')
import mechanize
import cookielib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Want debugging messages?
#br.set_debug_http(True)
#br.set_debug_redirects(True)
#br.set_debug_responses(True)
# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

你恐怕感兴趣的篇章:

  • 详细解释Python四十四线程Selenium跨浏览器测验
  • 浅谈python爬虫使用Selenium模拟浏览器行为
  • selenium python浏览器多窗口管理代码示例
  • python selenium 对浏览器标签页实行停业和切换的章程
  • 因此python+selenium3达成浏览器刷简书小说阅读量
  • Selenium 模拟浏览器动态加载页面包车型客车落实情势
  • Python使用Selenium模块完成模拟浏览器抓取Taobao商品山珍海味音信意义示例
  • Selenium鼠标与键盘事件常用操作方法示例
  • Selenium成分的常用操作方法深入分析
  • Selenium(Python web测量试验工具)基本用法详明
  • Selenium调控浏览器经常见到操作示例

在python下边需求安装一下cookie的保持

# Proxy and user/password
br.set_proxies({"http": "joe:password@myproxy.example.com:3128"})
# Proxy
br.set_proxies({"http": "myproxy.example.com:3128"})
# Proxy password
br.add_proxy_password("joe", "password")
import time
from multiprocessing import Pool
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from bs4 import BeautifulSoup
from pymongo import MongoClient
from pymongo.errors import PyMongoError
# monogdb配置信息
MONGO_HOST = "localhost"
MONGO_DATABASE = "douyu"
MONGO_TABLE = "zhibo"
client = MongoClient(host=MONGO_HOST)
db = client[MONGO_DATABASE]
# PhantomJS 命令行相关配置
# 参见 http://phantomjs.org/api/command-line.html
SERVICE_ARGS = ['--disk-cache=true', '--load-images=false']
# driver = webdriver.Chrome() # 有界面
driver = webdriver.PhantomJS(service_args=SERVICE_ARGS) # 无界面
delay = 10
wait = WebDriverWait(driver, delay)
driver.maximize_window()
def get_total_pages():
  url = 'https://www.douyu.com/directory/all'
  driver.get(url)
  pages = int(driver.find_element_by_css_selector(
    '.shark-pager-dot + .shark-pager-item').text)
  print("正在获取第1页数据")
  room_list = get_rooms_by_beautifulsoup()
  save_to_monogodb(room_list)
  return pages
# 根据页码获取指定页数据,并将其保存到数据库中
def parse_page(page_num):
  print("正在获取第%d页数据" % page_num)
  try:
    page_num_box = wait.until(
      EC.presence_of_element_located(
        (By.CSS_SELECTOR, "input.jumptxt")))
    go_btn = wait.until(EC.element_to_be_clickable(
      (By.CSS_SELECTOR, 'a.shark-pager-submit')))
    page_num_box.clear()
    page_num_box.send_keys(page_num)
    go_btn.click()
    # driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    # time.sleep(0.1)
    wait.until(
      EC.text_to_be_present_in_element(
        (By.CSS_SELECTOR,
         '.shark-pager-item.current'),
        str(page_num)))
    # 对于By.CLASS_NAME invalid selector: Compound class names not permitted
    room_list = get_rooms_by_beautifulsoup()
    save_to_monogodb(room_list)
  except TimeoutException:
    print("请求第%d页失败" % page_num)
    print("尝试重新获取第%d页" % page_num)
    return parse_page(page_num)
# 通过bs4解析数据
def get_rooms_by_beautifulsoup():
  '''
  通过bs4库解析数据
  获取直播间的名称,观看人数,标签,主播名
  '''
  wait.until(EC.presence_of_element_located(
    (By.CSS_SELECTOR, "ul#live-list-contentbox > li")))
  html = driver.page_source
  soup = BeautifulSoup(html, 'lxml')
  rooms = soup.select('ul#live-list-contentbox > li')
  for room in rooms:
    room_name = room.find(
      'h3', attrs={
        'class': 'ellipsis'}).get_text(
      strip=True)
    view_count = room.find('span', class_='dy-num fr').text
    tag = room.find('span', class_='tag ellipsis').text
    hostname = room.find('span', class_='dy-name ellipsis fl').text
    #print("房间名: " + room_name + "t观看人数: " + view_count + "t标签: " + tag + "t主播名: " + hostname)
    yield {
      'room_name': room_name,
      'view_count': view_count,
      'tag': tag,
      'hostname': hostname,
    }
def save_to_monogodb(room_list):
  for room in room_list:
    try:
      db[MONGO_TABLE].insert(room)  # insert支持插入多条数据
      print("mongodb插入数据成功:", room)
    except PyMongoError as e:
      print("mongodb插入数据失败:", room, e)
if __name__ == '__main__':
  try:
    total_pages = get_total_pages()
    for page_num in range(2, total_pages + 1):
      parse_page(page_num)
  except Exception as e:
    print("出错了", e)
  finally: # 确保 浏览器能正常关闭
    print("共有%d页" % total_pages)
    driver.close()

你只怕感兴趣的稿子:

  • 在Python中选用mechanize模块模拟浏览器作用
  • Python模拟鼠标点击完成方式(将透超过实际例自动化模拟在360浏览器中自行寻找python卡塔尔国
  • Python使用win32com得以完结的模拟浏览器功效示例
  • 浅谈python爬虫使用Selenium模拟浏览器行为
  • Python使用Selenium模块达成模拟浏览器抓取Taobao商品美食消息成效示例
  • Python使用Selenium模块模拟浏览器抓取麻木不仁鱼直播间消息示例
  • 对此Python的框架中有的会话程序的管住
  • Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
  • 用Python中的wxPython完毕最基本的浏览器成效
  • Python使用Selenium模块模拟浏览器抓取不闻不问鱼直播间消息示例。python3得以完毕读取chrome浏览器cookie
  • 详整Python八线程Selenium跨浏览器测验

近期你收获了三个浏览器的示范,br对象。使用那几个目的,便足以展开一个页面,使用相像如下的代码:  

盼望本文所述对我们Python程序设计有所补助。

更加多关于Python相关内容可查看本站专项论题:《Python Socket编程技艺计算》、《Python数据布局与算法教程》、《Python函数使用本领计算》、《Python字符串操作能力汇总》、《Python入门与进级经典教程》及《Python文件与目录操作技艺汇总》

——————————————————————————————

越多关于Python相关内容可查阅本站专项论题:《Python Socket编制程序本事总计》、《Python正则表明式用法计算》、《Python数据布局与算法教程》、《Python函数使用技艺总括》、《Python字符串操作工夫汇总》、《Python入门与进级精髓教程》及《Python文件与目录操作技术汇总》

央求之后浏览器会有三个对话保持的历程,会话都以保留在二个cookie里面包车型大巴,下二遍页面包车型大巴伸手会把cookie放到央求头,假设cookie错过会话也就断开了。

知情哪些火速在命令行或然python脚本中实例化一个浏览器常常是极其管用的。
老是本身需求做其余关于web的机动任务时,小编都应用这段python代码去模拟二个浏览器。  

com澳门官方直营,此中的post数据必要urllib.encode()生机勃勃晃,其实就是将词典转变来“data1=value1&data2=value2”的格式。

cookielib模块的首要作用是提供可存款和储蓄cookie的靶子,以便于与urllib2模块同盟使用来做客Internet资源。比如能够使用本模块的CookieJar类的指标来捕获cookie并在后续连接恳求时再也发送。coiokielib模块用到的对象重要有上边多少个:CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
urllib模块和urllib模块雷同,用来开荒U奥迪Q3L并从当中获取数据。与urllib模块差异的是,urllib模块不只好够运用urlopen(卡塔尔国函数还是能自定义Opener来访谈网页。同一时候要留神:urlretrieve(卡塔尔国函数是urllib模块中的,urllib2模块中一纸空文该函数。然而利用urllib2模块时常常都离不开urllib模块,因为POST的数量必要采纳urllib.urlencode(卡塔尔(قطر‎函数来编码。

正文实例叙述了Python落成模拟浏览器央求及会话保持操作。分享给大家供我们参谋,具体如下:

若果您拜候的网址须求表明(http basic authState of Qatar,那么:  

com澳门官方直营 1

你或然感兴趣的篇章:

  • Python模拟鼠标点击达成方式(将经过实例自动化模拟在360浏览器中活动寻找pythonState of Qatar
  • Python使用win32com兑现的效仿浏览器功效示例
  • 浅谈python爬虫使用Selenium模拟浏览器行为
  • Python使用Selenium模块实现模拟浏览器抓取天猫商品美味的吃食音讯作用示例
  • Python使用Selenium模块模拟浏览器抓取不闻不问鱼直播间音讯示例
  • 对此Python的框架中有个别会话程序的军事拘禁
  • Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
  • 用Python中的wxPython达成最中央的浏览器成效
  • python3贯彻读取chrome浏览器cookie
  • 详整Python三十二线程Selenium跨浏览器测量试验
  • Python完毕模拟浏览器央浼及会话保持操作示例

本文由澳门网络娱乐游戏平台发布于编程,转载请注明出处:Python使用Selenium模块模拟浏览器抓取不闻不问鱼直播间消息示例

相关阅读