導航:首頁 > 編程語言 > python京東登陸

python京東登陸

發布時間:2022-07-10 00:29:12

Ⅰ 使用python怎麼獲取京東網站cookie進行登錄

# -*- coding: utf-8 -*-
# !/usr/bin/python
import os
import urllib2
import urllib
import cookielib
import re
import sys
from bs4 import BeautifulSoup
『『『
編碼方式的設置,在中文使用時用到中文時的處理方式
『『『
default_encoding = "utf-8"
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding("utf-8")
def getHtml(url,data={}):
if(data=={}):
req=urllib2.Request(url)
else:
req=urllib2.Request(url,urllib.urlencode(data))
html=urllib2.urlopen(req).read()
return html
try:
cookie = cookielib.CookieJar()
cookieProc = urllib2.HTTPCookieProcessor(cookie)
except:
raise
else:
opener = urllib2.build_opener(cookieProc)
opener.addheaders = [(『User-Agent『,『Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11『)]
urllib2.install_opener(opener)
auth_url=『『
#auth_url = 『『
home_url=『『
#home_url = 『;
url = ""
login=getHtml(url)
#print login
loginSoup = BeautifulSoup(login,『html.parser『)
#查找登陸參數中的uuid
uuid = loginSoup.find_all("form")[0].find_all("input")[0][『value『]
print uuid
clrName=loginSoup.find_all("form")[0].find_all("input")[6][『name『]
clrValue=loginSoup.find_all("form")[0].find_all("input")[6][『value『]
『『『這倆參數不是必須。。。。
eid=loginSoup.find_all("form")[0].find_all("input")[4][『value『]
fp=loginSoup.find_all("form")[0].find_all("input")[5][『value『]
『『『
#下載驗證碼圖片:
checkPicUrl = loginSoup.find_all("div",id="o-authcode")[0].find_all("img")[0][『src2『]
req = getHtml(checkPicUrl)
checkPic = open("checkPic.jpg","w")
checkPic.write(req)
checkPic.close()
#調用mac系統的預覽(圖像查看器)來打開圖片文件
os.system(『open /Applications/Preview.app/ checkPic.jpg『)
checkCode = raw_input("請輸入彈出圖片中的驗證碼:")
#登錄URL
url = ""
# 登陸用戶名和密碼
postData = {
『loginname『:『你自己的賬號『,
『nloginpwd『:『你自己的密碼『,
『loginpwd『:『你自己的密碼『,
# 『machineNet『:『『,
# 『machineCpu『:『『,
# 『machineDisk『:『『,
str(clrName):str(clrValue),
『uuid『:uuid,
『authcode『: checkCode
}
passport=getHtml(url,postData)
print passport
# 初始化一個CookieJar來處理Cookie
『『『
cookieJar=cookielib.CookieJar()
# 實例化一個全局opener
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
# 獲取cookie
req=urllib2.Request(auth_url,post_data,headers)
result = opener.open(req)
# 訪問主頁 自動帶著cookie信息
『『『
result = opener.open(『『)
# 顯示結果
#print result.read()
soup=BeautifulSoup(result,『html.parser『)
#昵稱
nickName = soup.find_all("input", id="nickName")[0]["value"]
print "nickName:",
print nickName

Ⅱ 如何用python獲取京東的評論數據

京東商品評論信息是由JS動態載入的,所以直接抓取商品詳情頁的URL並不能獲得商品評論的信息。因此我們需要先找到存放商品評論信息的文件。這里我們使用Chrome瀏覽器里的開發者工具進行查找。
具體方法是在商品詳情頁點擊滑鼠右鍵,選擇檢查,在彈出的開發者工具界面中選擇Network,設置為禁用緩存(Disable cache)和只查看JS文件。然後刷新頁面。頁面載入完成後向下滾動滑鼠找到商品評價部分,等商品評價信息顯示出來後,在下面Network界面的左側篩選框中輸入proctPageComments,這時下面的載入記錄中只有一條信息,這里包含的就是商品詳情頁的商品評論信息。點擊這條信息,在右側的Preview界面中可以看到其中包含了當前頁面中的評論信息。(抓取價格信息輸入prices)。

復制這條信息,並把URL地址放在瀏覽器中打開,裡麵包含了當前頁的商品評論信息。這就是我們要抓取的URL地址。
仔細觀察這條URL地址可以發現,其中proctId=10001234327是當前商品的商品ID。與商品詳情頁URL中的ID一致。而page=0是頁碼。如果我們要獲取這個商品的所有評論,只需要更改page後面的數字即可。

在獲得了商品評論的真實地址以及URL地址的規律後,我們開始使用python抓取這件商品的700+條評論信息。並對這些信息進行處理和分析。
開始前的准備工作
在開始抓取之前先要導入各種庫文件,這里我們分別介紹下需要導入的每個庫文件的名稱以及在數據抓取和分析中的作用。requests用於進行頁面抓取,time用於設置抓取過程中的Sleep時間,random用於生產隨機數,這里的作用是將抓取頁面的順序打亂,re用於在抓取後的頁面代碼中提取需要的信息,numpy用於常規的指標計算,pandas用於進行數據匯總和透視分析,matplotlib用於繪制各站圖表,jieba用於對評論內容進行分詞和關鍵詞提取。
#導入requests庫(請求和頁面抓取)
import requests
#導入time庫(設置抓取Sleep時間)
import time
#導入random庫(生成亂序隨機數)
import random
#導入正則庫(從頁面代碼中提取信息)
import re
#導入數值計算庫(常規計算)
import numpy as np
#導入科學計算庫(拼表及各種分析匯總)
import pandas as pd
#導入繪制圖表庫(數據可視化)
import matplotlib.pyplot as plt
#導入結巴分詞庫(分詞)
import jieba as jb
#導入結巴分詞(關鍵詞提取)
import jieba.analyse

將爬蟲偽裝成瀏覽器
導入完庫文件後,還不能直接進行抓取,因為這樣很容易被封。我們還需要對爬蟲進行偽裝,是爬蟲看起來更像是來自瀏覽器的訪問。這里主要的兩個工作是設置請求中的頭文件信息以及設置Cookie的內容。
頭文件信息很容易找到,在Chrome的開發者工具中選擇Network,刷新頁面後選擇Headers就可以看到本次訪問的頭文件信息,裡麵包含了一些瀏覽器的技術參數和引薦來源信息。將這些信息直接添加到代碼中就可以,這里我們將頭部信息保存在headers中。

#設置請求中頭文件的信息
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept':'text/html;q=0.9,*/*;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Connection':'close',
'Referer':''
}

在查看頭文件信息的旁邊還有一個Cookies標簽,點擊進去就是本次訪問的Cookies信息。這里的Cookies信息與前面頭文件中的Cookie信息一致,不過這里更加清晰。把Request Cookies信息復制到代碼中即可,這里我們將Request Cookies信息保存在Cookie中。

#設置Cookie的內容
cookie={'TrackID':'1_VWwvLYiy1FUr7wSr6HHmHhadG8d1-Qv-TVaw8JwcFG4EksqyLyx1SO7O06_Y_XUCyQMksp3RVb2ezA',
'__jda':'122270672.1507607632.1423495705.1479785414.1479794553.92',
'__jdb':'122270672.1.1507607632|92.1479794553',
'__jdc':'122270672',
'__j':'1507607632',
'__jdv':'122270672|direct|-|none|-|1478747025001',
'areaId':'1',
'cn':'0',
'ipLoc-djd':'1-72-2799-0',
'ipLocation':'%u5317%u4EAC',
'mx':'0_X',
'rkv':'V0800',
'user-key':'216123d5-4ed3-47b0-9289-12345',
'xtest':'4657.553..'}

抓取商品評論信息
設置完請求的頭文件和Cookie信息後,我們開始抓取京東商品評論的信息。前面分析URL的時候說過,URL中包含兩個重要的信息,一個是商品ID,另一個是頁碼。這里我們只抓取一個商品的評論信息,因此商品ID不需要更改。但這個商品的評論有700+條,也就是有近80頁需要抓取,因此頁碼不是一個固定值,需要在0-80之間變化。這里我們將URL分成兩部分,通過隨機生成頁碼然後拼接URL的方式進行抓取。
#設置URL的第一部分
url1=''
#設置URL的第二部分
url2='&pageSize=10&callback=fetchJSON_comment98vv41127'
#亂序輸出0-80的唯一隨機數
ran_num=random.sample(range(80), 80)

為了使抓取過程看起來更加隨機,我們沒有從第1頁一直抓取到第80頁。而是使用random生成0-80的唯一隨機數,也就是要抓取的頁碼編號。然後再將頁碼編號與兩部分URL進行拼接。這里我們只知道商品有700+的評論,但並不知道具體數字,所以抓取范圍定位從0-80頁。
下面是具體的抓取過程,使用for循環每次從0-80的隨機數中找一個生成頁碼編號,與兩部分的URL進行拼接。生成要抓取的URL地址並與前面設置好的頭文件信息和Cookie信息一起發送請求獲取頁面信息。將獲取到的頁面信息進行匯總。每次請求間休息5秒針,避免過於頻繁的請求導致返回空值。
#拼接URL並亂序循環抓取頁面
for i in ran_num:
a = ran_num[0]
if i == a:
i=str(i)
url=(url1+i+url2)
r=requests.get(url=url,headers=headers,cookies=cookie)
html=r.content
else:
i=str(i)
url=(url1+i+url2)
r=requests.get(url=url,headers=headers,cookies=cookie)
html2=r.content
html = html + html2
time.sleep(5)
print("當前抓取頁面:",url,"狀態:",r)

在抓取的過程中輸入每一步抓取的頁面URL以及狀態。通過下面的截圖可以看到,在page參數後面的頁碼是隨機生成的並不連續。
抓取完80個頁面後,我們還需要對頁面進行編碼。完成編碼後就可以看到其中所包含的中文評論信息了。後面大部分苦逼的工作就是要對這些評論信息進行不斷提取和反復的清洗。
#對抓取的頁面進行編碼
html=str(html, encoding = "GBK")

這里建議將抓取完的數據存儲在本地,後續工作可以直接從本地打開文件進行清洗和分析工作。避免每次都要重新抓取數據。這里我們將數據保存在桌面的page.txt文件中。
#將編碼後的頁面輸出為txt文本存儲
file = open("c:\\Users \\Desktop\\page.txt", "w")
file.write(html)
file.close()

讀取文件也比較簡單,直接open加read函數就可以完成了。
#讀取存儲的txt文本文件
html = open('c:\\Users\\ Desktop\\page.txt', 'r').read()

提取信息並進行數據清洗
京東的商品評論中包含了很多有用的信息,我們需要將這些信息從頁面代碼中提取出來,整理成數據表以便進行後續的分析工作。這里應該就是整個過程中最苦逼的數據提取和清洗工作了。我們使用正則對每個欄位進行提取。對於特殊的欄位在通過替換等方式進行提取和清洗。
下面是提取的第一個欄位userClient,也就是用戶發布評論時所使用的設備類型,這類的欄位提取還比較簡單,一行代碼搞定。查看一下提取出來的欄位還比較干凈。使用同樣的方法我們分別提取了以下這些欄位的內容。
#使用正則提取userClient欄位信息
userClient=re.findall(r',"usefulVoteCount".*?,"userClientShow":(.*?),',html)
#使用正則提取userLevel欄位信息
userLevel=re.findall(r'"referenceImage".*?,"userLevelName":(.*?),',html)
#使用正則提取proctColor欄位信息
proctColor=re.findall(r'"creationTime".*?,"proctColor":(.*?),',html)
#使用正則提取recommend欄位信息
recommend=re.findall(r'"creationTime".*?,"recommend":(.*?),',html)
#使用正則提取nickname欄位信息
nickname=re.findall(r'"creationTime".*?,"nickname":(.*?),',html)
#使用正則提取userProvince欄位信息
userProvince=re.findall(r'"referenceImage".*?,"userProvince":(.*?),',html)
#使用正則提取usefulVoteCount欄位信息
usefulVoteCount=re.findall(r'"referenceImage".*?,"usefulVoteCount":(.*?),',html)
#使用正則提取days欄位信息
days=re.findall(r'"usefulVoteCount".*?,"days":(.*?)}',html)
#使用正則提取score欄位信息
score=re.findall(r'"referenceImage".*?,"score":(.*?),',html)</pre>

還有一些欄位比較負責,無法通過正則一次提取出來,比如isMobile欄位,有些值的後面還有大括弧。這就需要進一步的提取和清洗工作。
#使用正則提取isMobile欄位信息
isMobile=re.findall(r'"usefulVoteCount".*?,"isMobile":(.*?),',html)

使用for循環配合替換功能將欄位中所有的}替換為空。替換完成後欄位看起來干凈多了。
#替換掉最後的}
mobile=[]
for m in isMobile:
n=m.replace('}','')
mobile.append(n)

proctSize欄位中包含了胸圍和杯罩兩類信息,為了獲得獨立的杯罩信息需要進行二次提取,將杯罩信息單獨保存出來。
#使用正則提取proctSize欄位信息
proctSize=re.findall(r'"creationTime".*?,"proctSize":(.*?),',html)

使用for循環將proctSize中的第三個字元杯罩信息提取出來,並保持在cup欄位中。
#提取杯罩信息
cup=[]
for s in proctSize:
s1=s[3]
cup.append(s1)

創建評論的日期信息僅依靠正則提取出來的信息還是比較亂,無法直接使用。因此也需要進行二次提取。下面是使用正則提取出的結果。
#使用正則提取時間欄位信息
creationTime1=re.findall(r'"creationTime":(.*?),"referenceName',html)

日期和時間信息處於前20個字元,在二次提取中根據這個規律直接提起每個條目的前20個字元即可。將日期和時間單獨保存為creationTime。
#提取日期和時間
creationTime=[]
for d in creationTime1:
date=d[1:20]
creationTime.append(date)

在上一步日期和時間的基礎上,我們再進一步提取出單獨的小時信息,方法與前面類似,提取日期時間中的第11和12個字元,就是小時的信息。提取完保存在hour欄位以便後續的分析和匯總工作。
#提取小時信息
hour=[]
for h in creationTime:
date=h[10:13]
hour.append(date)

最後要提取的是評論內容信息,頁面代碼中包含圖片的評論信息是重復的,因此在使用正則提取完後還需要對評論信息進行去重。
#使用正則提取評論信息
content=re.findall(r'"guid".*?,"content":(.*?),',html)

使用if進行判斷,排除掉所有包含圖片的評論信息,已達到評論去重的目的。
#對提取的評論信息進行去重
content_1=[]
for i in content:
if not "img" in i:
content_1.append(i)

完成所有欄位信息的提取和清洗後,將這些欄位組合在一起生成京東商品評論數據匯總表。下面是創建數據表的代碼。數據表生成後還不能馬上使用,需要對欄位進行格式設置,例如時間和日期欄位和一些包含數值的欄位。具體的欄位和格式設置依據後續的分析過程和目的。這里我們將creationTime設置為時間格式,並設置為數據表的索引列。將days欄位設置為數值格式。
#將前面提取的各欄位信息匯總為table數據表,以便後面分析
table=pd.DataFrame({'creationTime':creationTime,'hour':hour,'nickname':nickname,'proctColor':proctColor,'proctSize':proctSize,'cup':cup,'recommend':recommend,'mobile':mobile,'userClient':userClient,'userLevel':userLevel,'userProvince':userProvince,'usefulVoteCount':usefulVoteCount,'content_1':content_1,'days':days,'score':score})
#將creationTime欄位更改為時間格式
table['creationTime']=pd.to_datetime(table['creationTime'])
#設置creationTime欄位為索引列
table = table.set_index('creationTime')
#設置days欄位為數值格式
table['days']=table['days'].astype(np.int64)
#查看整理完的數據表
table.head()

這里建議再次保存清洗和預處理完的數據表。我們這里將數據表保存為csv格式。到了這一步可以選擇在Excel中完成後續的數據分析和可視化過程,也可以繼續在python中完成。我們這里選擇繼續在python中完成後續的數據分析和可視化工作。
#保存table數據表
table.to_csv('jd_table.csv')

數據分析及可視化
分月評論數據變化趨勢
首先查看京東商品評論的時間變化趨勢情況,大部分用戶在購買商品後會在10天以內進行評論,因此我們可以近似的認為在一個月的時間維度中評論時間的變化趨勢代表了用戶購買商品的變化趨勢。

Ⅲ python登陸,為什麼總是跳轉不到登陸界面

自動化爬蟲類的不是很懂,不過感覺你找用戶登錄界面的用戶名登錄用的css選擇器有點問題,那個tj_login不是id。#u1 .lb這個能定位到那個a標簽。

Ⅳ 用python代碼下載京東訂單清單存到xlsx文件或者csv文件

你的訂單量有多少,如果不是上千上萬那種的話可以手動把所有訂單頁面下載下來,後再用python去處理,這樣可行性及工作量比你直接模擬登錄再做一堆操作來得快,而且爬京東這樣的大公司網站要是被檢測出來,警告還好,要是賬號被封那就不值得了。


我自己下載好的html源碼

Ⅳ 怎樣用Python寫登錄頁面

#!/usr/bin/envpythondeflogin(username,password):
f=open("db",'r')#讀文件
forlineinf:
l1=line.split("|")ifl1[0]==usernameandl1[1]==password:returnTrue
returnFalsedefregedit(username,password):
f=open("db",'a')#a表示添加
temp=" "+username+"|"+password
f.write(temp)
f.close()defmain():
a=input("1:登陸,2:注冊")ifa=="1":
username=input("請輸入用戶名:")
password=input("請輸入密碼:")
r=login(username,password)ifr==True:
print("登陸成功")else:
print("登陸失敗")elifa=="2":
print("注冊")
user=input("請輸入用戶名:")
passwd=input("請輸入密碼:")
regedit(user,passwd)

main()

Ⅵ 如何用python實現網頁自動登錄

這個你要用到BP,抓取數據包,通過分析數據包提交的表單,每次調用腳本的時候將表單進行提交,但一般這種可行比較低,看網頁的安全性做的如何,如果有驗證碼和token校驗的話你就不用試了。

Ⅶ 怎樣用python實現網頁自動登錄

可以在cmd下通過命令安裝selenium模塊:pip install selenium 或者 easy_install selenium。

分析網頁控制項id:

# -*- coding: utf-8 -*-

import os

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

iedriver = "C:Program FilesInternet ExplorerIEDriverServer.exe"

os.environ["webdriver.ie.driver"] = iedriver #調用IE瀏覽器

browser = webdriver.Ie(iedriver)

browser.get('http://weibo.com/') #需要打開的網址

user = browser.find_element_by_id("loginname") #審查元素username的id

user.send_keys("11111") #輸入賬號

password = browser.find_element_by_name("password") #審查元素password的name

password.send_keys("1234") #輸入密碼

password.send_keys(Keys.RETURN) #實現自動點擊登陸

print('登陸成功')

Ⅷ 爬蟲小白求問python如何爬取天貓京東等網頁

大的原則上,在網上能公開訪問的可見的數據資料都是有辦法爬取到的,天貓和京東上是有部分的訂單成交數據的,所以這些也是可以爬取的。某寶中的楚江數據,數據採集工作可以代寫爬蟲,也可以直接讓他們爬取數據,視頻,圖片,文字都可以。

Ⅸ 怎樣利用python打開一個網頁並實現自動登錄

登陸其實就是將賬號密碼之類的POST到那個網站的伺服器。你可以通過抓包看到你點擊登陸時發的POST包。那麼你用python也模擬發一個一樣的包給伺服器,就實現了模擬登陸唄。

Ⅹ 為什麼用 python 獲取京東網頁時,價格元素的內容是空的

之前我用php的cUrl獲取信息的時候也是這樣,JD的價格是通過默認選中規格,然後通過JS拼到頁面上的,所以我們看著有數據但是拿不到。

閱讀全文

與python京東登陸相關的資料

熱點內容
mdr軟體解壓和別人不一樣 瀏覽:884
單片機串列通信有什麼好處 瀏覽:320
游戲開發程序員書籍 瀏覽:843
pdf中圖片修改 瀏覽:268
匯編編譯後 瀏覽:474
php和java整合 瀏覽:829
js中執行php代碼 瀏覽:440
國產單片機廠商 瀏覽:57
蘋果手機怎麼設置不更新app軟體 瀏覽:284
轉行當程序員如何 瀏覽:492
蘋果id怎麼驗證app 瀏覽:864
查看手機命令 瀏覽:953
抖音反編譯地址 瀏覽:226
如何加密軟體oppoa5 瀏覽:233
java從入門到精通明日科技 瀏覽:95
拆解汽車解壓視頻 瀏覽:598
新版百度雲解壓縮 瀏覽:593
android上下拉刷新 瀏覽:880
centos可執行文件反編譯 瀏覽:839
林清玄pdf 瀏覽:271