python抓取需要掃微信登陸頁面

一,抓取情況描述

1.抓取的頁面需要登陸,以公司網頁爲例,登陸網址https://app-ticketsys.hezongyun.com/index.php ,(該網頁登陸方式微信掃碼登陸)

2.需要抓取的內容如下圖所示:

需要提取

工單對應編號,如TK-2960

工單發起時間,如2018-08-17 11:12:13

工單標題內容,如設備故障

工單正文內容,如最紅框所示

二,網頁分析

1.按按Ctrl + Shift + I或者鼠標右鍵點擊檢查進入開發人員工具。

可以看到頁面顯示如下:

主要關注點如上圖框住和劃線處

首先點擊網絡,記住以下信息將用於代碼修改處。

  1. Resquest URL:https: //app-ticketsys.hezongyun.com/index.php/ticket/ticket_list/init這個是需要爬取頁面的信息
  2. 請求Menthod:GET
  3. 餅乾:用於需要登陸頁面
  4. User-Agent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,類似Gecko)Chrome / 67.0.3396.62 Safari / 537.36

記住以上信息後粗略瞭解網頁樹形結構用BeatifulSoup中SELEC怎麼取出內容

示例:的H1M1一段代碼如下:

html =“”“
<html> <head> <title>睡鼠的故事</ title> </ head>
<body>
<p class =”title“name =”dromouse“> <b>睡鼠的故事</ b > </ p>
<p class =“story”>從前有三個小姐妹;他們的名字是
<a href =“http://example.com/elsie”class =“sister”id =“ link1“> <! - Elsie - > </a>,
<a href="http://example.com/lacie" class="sister" id="link2"> Lacie </a>和
<a href =“http://example.com/tillie”class =“sister”id =“link3”> Tillie </a>;
他們住在井底。</ p>
<p class =“story”> ... </ p>
“”“

如果我們喝湯得到了上面那段HTML的結構提取內容方法如下

1.通過標籤名查找soup.select( '標題'),如需要取出含有一個標籤的內容則soup.select( 'a')的

2.通過類名查找soup.select( 'CLASS_NAME ')如取出標題的內容則soup.select('。標題')

3.通過ID名字查找soup.select( '#ID_NAME')如取出ID = LINK2的內容則soup.select( '#LINK2')

上述元素名字可以利用左上角箭頭取出,如下圖

三,程序編寫

# -*- coding:utf-8 -*-
import requests
import sys
import io
from bs4 import BeautifulSoup
import sys
import xlwt
import urllib,urllib2
import re

def get_text():
    #登錄後才能訪問的網頁,這個就是我們在network裏查看到的Request URL
    url = 'https://app-ticketsys.hezongyun.com/index.php/ticket/ticket_iframe/'

    #瀏覽器登錄後得到的cookie,這個就是我們在network裏查看到的Coockie
    cookie_str = r'ci_ticketsys_session=‘***********************************’

    #把cookie字符串處理成字典
    cookies = {}
    for line in cookie_str.split(';'):
        key, value = line.split('=', 1)
        cookies[key] = value

    #設置請求頭
    headers = {'User-Agent':'Mozilla/5.0(Windows NT 10.0; Win64;x64)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/67.0.3396.62 Safari/537.36'}
    #在發送get請求時帶上請求頭和cookies
    resp = requests.get(url, cookies = cookies,headers = headers)
    soup = BeautifulSoup(resp.text,"html.parser")
    print soup

上述代碼就能得到登陸網頁的HTML源碼,這個源碼呈一個樹形結構,接下來針對需求我們提取需要的內容進行提取

我們需要工單號,對應時間,對應標題

按箭頭點擊到對應工單大塊,可以查詢到,所有的工單號,工單發起時間,工單標題均在<ul id =“ticket-list”>這個id下面

那麼點開一個工單結構,例如工單號ID = “4427” 下面我們需要知道工單號,工單發起時間,工單內容可以看到

1.工單內容在H3標籤下面

2.工單編號在類=“NUM”下面

3.工單發起時間在類= “時間” 下面

for soups in soup.select('#ticket-list'):
    if len(soups.select('h3'))>0:
        id_num = soups.select('.num')
        star_time = soups.select('.time')
        h3 = soups.select('h3')
        print id_num,start_time,h3

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章