pip를 업그레이드
python -m pip install --upgrade pip 를 입력하셔서 pip를 업그레이드하면 설치가 가능합니다.
python -m pip install --upgrade pip 를 입력하셔서 pip를 업그레이드하면 설치가 가능합니다.
Ctrl + Space : Basic code completion (the name of any class,method or variable)
Ctrl + Shift + Space : Smart code completion (filters the list of methodsand variables by expected type)
Ctrl + Shift + Enter: Complete statement
Ctrl + P : 함수호출시 인수 정보 확인 (within method call arguments)
Ctrl + Q : 코드에 대한 문서창 팝업
Shift + F1 : 코드에 대한 문서 인터넷 브라우저로 팝업
Ctrl + mouse : 코드를 링크처럼 타고 들어감
Ctrl + F1 : Show descriptions of error or warning at caret
Alt + Insert : 코드 생성 (Getters, Setters, Constructors,hashCode/equals, toString)
Ctrl + O : 메서드 오버라이드 구현
Ctrl + I : 인터페이스 메서드 구현
Ctrl + Alt + T : 다음으로 코드 감싸기… (if..else, try..catch, for,synchronized, etc.)
Ctrl + / : 줄 단위 주석 토글
Ctrl + Shift + / : 블럭 단위 주석 토글
Ctrl + W : 가장 안쪽의 괄호부터 선택(점점 확장 된다.)
Ctrl + Shift + W : Decrease current selection to previous state
Alt + Q : Context info
Alt + Enter : Show intention actions and quick-fixes
Ctrl + Alt + L : 파일 단위 재정렬 (이클립스의 ctrl + shift + f)
Ctrl + Alt + O : import 문 최적화
Ctrl + Alt + I : 줄단위 재정렬
Tab / Shift + Tab : 들여쓰기/내어쓰기
Ctrl + X or Shift + Delete : 잘라내기 (블럭 선택이 안되어 있으면 라인을 잘라냄)
Ctrl + C or Ctrl + Insert : 복사하기(블럭 선택이 안되어 있으면 라인을 복사함)
Ctrl + V or Shift + Insert : 붙여넣기
Ctrl + Shift + V : 복사하기 (목록에서 선택하여)
Ctrl + D : 선택된 블럭을 복제
Ctrl + Y : 캐럿을 있는 곳의 라인 삭제
Ctrl + Shift + J : 스마트하게 코드를 한 줄로 합친다.
Ctrl + Enter : 스마트하게 코드를 여러줄로 나눈다.
Shift + Enter : 커서가 어디에 있건 다음 라인을 생성하고 첫줄로 이동
Ctrl + Shift + U : 커서가 있는 곳이나 블럭이 있는 곳을 대문자 및 소문자로 치화
Ctrl + Shift + ] / [ : 가장 가까운 괄호 시작/종료로 이동
Ctrl + Delete : 단어 삭제 (커서 시작부터)
Ctrl + Backspace : Delete to word start
Ctrl + NumPad+/- : Expand/collapse code block
Ctrl + Shift + NumPad+ : Expand all
Ctrl + Shift + NumPad- : Collapse all
Ctrl + F4 : Close active editor tab
Ctrl + F : Find
F3 : Find next
Shift + F3 : Find previous
Ctrl + R : Replace
Ctrl + Shift + F : Find in path
Ctrl + Shift + R : Replace in path
Ctrl + Shift + S : Search structurally (Ultimate Edition only)
Ctrl + Shift + M : Replace structurally (Ultimate Edition only)
Alt + F7 / Ctrl + F7 : Find usages , Find usages in file
Ctrl + Shift + F7 : Highlight usages in file
Ctrl + Alt + F7 : Show usages
Ctrl + F9 : Make project (compile modifed and dependent)
Ctrl + Shift + F9 : Compile selected file, package or module
Alt + Shift + F10 : Select configuration and run
Alt + Shift + F9 : Select configuration and debug
Shift + F10 : Run
Shift + F9 : Debug
Ctrl + Shift + F10 : Run context configuration from editor
F8 : Step over
F7 : Step into
Shift + F7 : Smart step into
Shift + F8 : Step out
Alt + F9 : Run to cursor
Alt + F8 : Evaluate expression
F9 : Resume program
Ctrl + F8 : Toggle breakpoint
Ctrl + Shift + F8 : View breakpoints
Ctrl + N : Go to class
Ctrl + Shift + N : Go to file
Ctrl + Alt + Shift + N : Go to symbol
Alt + Right/Left : Go to next/previous editor tab
F12 : Go back to previous tool window
Esc : Go to editor (from tool window)
Shift + Esc : Hide active or last active window
Ctrl + Shift + F4 : Close active run/messages/find/... tab
Ctrl + G : Go to line
Ctrl + E : Recent files popup
Ctrl + Alt + Left/Right : Navigate back/forward
Ctrl + Shift + Backspace : Navigate to last edit location
Alt + F1 : Select current file or symbol in any view
Ctrl + B or Ctrl + Click : Go to declaration
Ctrl + Alt + B : Go to implementation(s)
Ctrl + Shift + I : Open quick definition lookup
Ctrl + Shift + B : Go to type declaration
Ctrl + U : Go to super-method/super-class
Alt + Up/Down : Go to previous/next method
Ctrl + ] / [ : Move to code block end/start
Ctrl + F12 File : structure popup
Ctrl + H Type : hierarchy
Ctrl + Shift + H : Method hierarchy
Ctrl + Alt + H : Call hierarchy
F2 / Shift + F2 : Next/previous highlighted error
F4 / Ctrl + Enter : Edit source / View source
Alt + Home : Show navigation bar
F11 : Toggle bookmark
Ctrl + F11 : Toggle bookmark with mnemonic
Ctrl + #[0-9] : Go to numbered bookmark
Shift + F11 : Show bookmarks
F5 : Copy
F6 : Move
Alt + Delete : Safe Delete
Shift + F6 : Rename
Ctrl + F6 : Change Signature
Ctrl + Alt + N : Inline
Ctrl + Alt + M : Extract Method
Ctrl + Alt + V : Extract Variable
Ctrl + Alt + F : Extract Field
Ctrl + Alt + C: Extract Constant
Ctrl + Alt + P : Extract Parameter
Ctrl + K : Commit project to VCS
Ctrl + T : Update project from VCS
Alt + Shift + C : View recent changes
Alt + BackQuote (`) : ‘VCS’ quick popup
Ctrl + Alt + J : Surround with Live Template
Ctrl + J : Insert Live Template
iter : Iteration according to Java SDK 1.5 style
inst : Check object type with instanceof and downcast it
itco : Iterate elements of java.util.Collection
itit : Iterate elements of java.util.Iterator
itli : Iterate elements of java.util.List
psf : public static final
thr : throw new
Alt + #[0-9] : Open corresponding tool window
Ctrl + S : Save all
Ctrl + Alt + Y : Synchronize
Ctrl + Shift + F12 : Toggle maximizing editor
Alt + Shift + F : Add to Favorites
Alt + Shift + I : Inspect current file with curre?nt profile
Ctrl + BackQuote (`) : Quick switch current scheme
Ctrl + Alt + S : Open Settings dialog
Ctrl + Alt + Shift + S : Open Project Structure dialog
Ctrl + Shift + A : Find Action
Ctrl + Tab : Switch between tabs and tool window
- 디렉토리, 패키지, 클래스 등 생성 목록 보기
맥 : Command + n
윈도우 : Alt + Insert
- 코드 템플릿
메인 메소드 : psm
System.out.println() : sout
if Null 구문 : ifn
실행환경 실행
- 현재포커스
맥 : Command + Shift + R
윈도우, 리눅스 : Shift + Ctrl + F10
- 이전실행
맥 : Ctrl + R
윈도우 : Shift + F10
-라인 복사
맥 : Command + D
윈도우 : Ctrl + D
-라인 삭제
맥 : Command + 백스페이스
윈도우 : Ctrl + Y
-라인 합치기(라인단위)
맥 : Command + Shift + J
윈도우 : Ctrl + Shift + J
라인 단위로 옮기기
- 구문 이동
맥 : Command + Shift + 위,아래
윈도우 : Ctrl + Shift + 위,아래
- 라인 이동
맥 : Option + Shift + 위,아래
윈도우 : Alt + Shift + 위,아래
- Element 단위로 옮기기
맥 : Option + Shift + Command+ 왼쪽,오른쪽
윈도우 : Alt + Ctrl + Shift + 왼쪽,오른쪽
- 인자값 즉시 보기
맥 : Command + P
윈도우 : Ctrl + P
- 코드 구현부 즉시 보기
맥 : Option + Space
윈도우 : Shift + Ctrl + I
- Doc 즉시 보기
맥 : F1
윈도우 : Ctrl + Q
- 단어별 이동
맥 : Alt + <, >
윈도우, 리눅스 : Ctrl + <, >
- 단어별 선택
맥 : Shift + Alt + <, >
윈도우, 리눅스 : Shift + Ctrl + <, >
- 라인 첫/끝 이동
맥 : Fn + <, >
윈도우 : Home, End
- 라인 전체 선택
맥 : Shift + Command + <, >
윈도우, 리눅스 : Shift + Home, End
- Page Up/Down
맥 : Fn + 위/아래
윈도우 : Page Up / Down
- 포커스 범위 한 단계씩 늘리기
맥 : Alt + 위/아래 화살표
윈도우, 리눅스 : Ctrl + W(위) / Shift + Ctrl + W(아래)
- 포커스 뒤로/앞으로 가기
맥 : Command + [ , ]
윈도우, 리눅스 : Ctrl + Alt + 좌,우
- 멀티 포커스
맥 : Alt + Alt + 아래
윈도우, 리눅스 : Ctrl + Ctrl + 아래
- 오류 라인 자동 포커스
맥 : F2
윈도우, 리눅스 : F2
- 현재 파일에서 검색
맥 : Command + F
윈도우 : Ctrl + F
- 현재 파일에서 교체
맥 : Command + R
윈도우 : Ctrl + R
- 전체 검색
맥 : Command + Shift + F
윈도우 : Ctrl + Shift + F
- 정규표현식으로 검색, 교체
맥, 윈도우 : Regex 체크
- 파일 검색
맥 : Shift + Command + O
윈도우 : Shift + Ctrl + N
- 메소드 검색
맥 : Alt + Command + O
윈도우 : Shift + Ctrl + Alt + N
- Action 검색
맥 : Shift + Command + A
윈도우 : Shift + Ctrl + A
- 최근 열었던 파일 목록 보기
맥 : Command + E
윈도우 : Ctrl + E
- 최근 수정했던 파일 목록 보기
맥 : Command + Shift+ E
윈도우 : Ctrl + Shift + E
- 변수/필드의 데이터 변경 지점 찾기
변경되는 포인트 : 변수나 필드에 커서를 놓고 action 에서 "dataflow" 입력 후 "Analyze Dataflow to Here" 선택
영향주는 포인트 : 변수나 필드에 커서를 놓고 action 에서 "dataflow" 입력 후 "Analyze Dataflow from Here" 선택
- 중복된 코드 찾기
action에서 " Locate Duplicate" 입력
- 스마트 자동완성
맥 : control + Shift + Space
윈도우 : control + Shift + Space
- 스태틱 메소드 자동완성
맥 : control + Shift * 2
윈도우 : control + Shift * 2
- Getter/Setter/생성자 자동완성
맥 : Command + N
윈도우 : Alt + Insert
- 자동완성
맥 : control + I
윈도우 : Ctrl + I
- Live Template 목록 보기
맥 : Command + J
윈도우, 리눅스 : Ctrl + J
- Live Template 메뉴에서 나만의 템플릿 추가 가능
- 변수 추출하기
맥 : Command + Option + V
윈도우, 리눅스 : Ctrl + Alt + V
- 파라미터 추출하기
맥 : Command + Option + P
윈도우, 리눅스 : Ctrl + Alt + P
- 메소드 추출하기
맥 : Command + Option + M
윈도우, 리눅스 : Ctrl + Alt + M
- 이너클래스 추출하기
맥 : F6
윈도우, 리눅스 : F6
- 이름 일괄 변경 하기
맥 : Shift + F6
윈도우, 리눅스 : Shift + F6
- 메소드 일괄 변경하기
맥 : Shift + Command + F6
윈도우, 리눅스 : Shift + Ctrl + F6
- Import 정리하기
맥 : control + Option + O
윈도우, 리눅스 : Ctrl + Alt + O
- Import 자동 정리하기
Action에서 optimize import on 검색후 On으로 변경
- 코드 자동 정렬하기
맥 : Command + Option + L
윈도우, 리눅스 : Ctrl + Alt + L
- Debug 모드로 실행하기(현재 위치의 메소드)
맥 : control + Shift + D
윈도우, 리눅스 : 없음
- Debug 모드로 실행하기(이전에 실행한 메소드)
맥 : control + D
윈도우, 리눅스 : Shift + F9
- Resume(다음 브레이크 포인트로 이동하기)
맥 : Command + Option + R
윈도우, 리눅스 : F9
- Step Over(현재 브레이크에서 다음 한줄로 이동하기)
맥 : F8
윈도우, 리눅스 : F8
- Step Into(현재 브레이크의 다음 메소드로 이동)
맥 : F7
윈도우, 리눅스 : F7
- Step Out(현재 메소드의 밖으로 이동)
맥 : Shift + F8
윈도우, 리눅스 : Shift + F8
- Evaluate Expression(브레이크된 상태에서 코드 사용하기)
맥 : Option+ F8
윈도우, 리눅스 : Alt + F8
- Watch(브레이크 이후의 코드 변경 확인하기)
맥 : 없음
윈도우, 리눅스 : 없음
- Git View On
맥 : Command + 9
윈도우, 리눅스 : Alt + 9
- Git Option Popup
맥 : control + V
윈도우, 리눅스 : Alt + '(Tab 위 버튼)
- Git History
맥 : control + V --> 4
윈도우, 리눅스 : Alt + '(Tab 위 버튼) --> 4
- Branch
맥 : control + V --> 7
윈도우, 리눅스 : Alt + '(Tab 위 버튼) --> 7
- Commit
맥 : Command + k
윈도우, 리눅스 : Ctrl + k
- Push
맥 : Command + Shift + k
윈도우, 리눅스 : Ctrl + Shift + k
- Pull
맥 : Command + Shift + A --> git pull
윈도우, 리눅스 : Ctrl + Shift + A --> git pull
- GitHub 연동하기
맥 : Command + Shift + A --> Share github
윈도우, 리눅스 : Command + Shift + A --> Share github
- GitHub Clone
메인 화면에서 Check out from Version Control 선택 후 Git 선택
- 클래스 구조 확인
맥 : command+7
윈동, : Alt + 7
- 플러그인 설치
맥 : Command + Shift + A --> Plugins(Preferences)
윈도우, 리눅스 : Command + Shift + A --> Plugins(Preferences)
- Terminal
맥 : Option+ F12
윈도우, 리눅스 : Alt + F12
# 뒤로가기
self.chrome_driver.execute_script("window.history.go(-1)")
whatismyip.com
# -*- coding: utf-8 -*-
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 pyquery import PyQuery as pq
from time import sleep
import random
#定义一个taobao类
class taobao_infos:
#对象初始化
def __init__(self):
#url = 'https://login.taobao.com/member/login.jhtml'
#url = 'https://list.tmall.com/search_product.htm?spm=a223b.7790858.navcat0.4.62374187pwC9hD&cat=55958013&acm=lb-zebra-22394-1783420.1003.4.1518563&scm=1003.4.lb-zebra-22394-1783420.OTHER_14853748879343_1518563'
#https://item.taobao.com/item.htm?spm=a21wu.241046-kr.4691948847.13.41cab6cbpi2Ajv&scm=1007.15423.84311.100200300000005&id=557437331692&pvid=80d0065c-3bd0-47c7-92d1-ca4ed23d812e
#url = 'https://taobao.com'
url = 'https://naver.com'
self.url = url
options = webdriver.ChromeOptions()
options.add_argument("disable-infobars") #
options.add_argument("--disable-extensions") # disabling extensions
options.add_argument("--disable-gpu") # applicable to windows os only
options.add_argument("--no-sandbox") # Bypass OS security model
options.add_argument('--disable-software-rasterizer')
options.add_argument("--disable-extensions") # disabling extensions
options.add_argument("--disable-dev-shm-usage") # overcome limited
options.add_argument("--enable-automation")
options.add_argument('--verbose')
options.add_argument("--disable-popup-blocking")
options.add_argument("--disable-webgl")
options.add_argument("--disable-web-security")
options.add_argument("--disable-xss-auditor")
PROXY = "23.23.23.23:3128" # IP:PORT or HOST:PORT
options.add_argument('--proxy-server=http://%s' % PROXY)
#options.add_argument("proxy-server=localhost:8080")
options.add_argument("lang=ko_KR") # 한국어!
# chrome에서 F11을 눌러 전체 화면으로 넓히는 옵션입니다.
#options.add_argument('--start-fullscreen')
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
options.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
# 웹드라이버가 실제 웹브라우저인것 처럼 속이기
options.add_argument("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36")
#options.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko")
#options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
#webdriver.chromeoptions() add_argument refere
#options.add_argument("Referer": "https://store.naver.com/restaurants/detail")
options.add_argument("--Referer=https://s.taobao.com")
#chrome_options.add_argument("--no-referrers")
self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=options)
self.browser.get("http://whatismyipaddress.com")
self.wait = WebDriverWait(self.browser, 10) #超时时长为10s
self.browser.get(self.url)
user_agent = driver.find_element_by_css_selector('#user-agent').text
print('User-Agent: ', user_agent)
chrome.get("http://whatismyipaddress.com")
sleep(100000)
#登录淘宝
def login(self):
# 打开网页
self.browser.get(self.url)
# 自适应等待,点击密码登录选项
self.browser.implicitly_wait(30) #智能等待,直到网页加载完毕,最长等待时间为30s
self.browser.find_element_by_xpath('//*[@class="forget-pwd J_Quick2Static"]').click()
# 自适应等待,点击微博登录宣传
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="weibo-login"]').click()
# 自适应等待,输入微博账号
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('username').send_keys(weibo_username)
# 自适应等待,输入微博密码
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('password').send_keys(weibo_password)
# 自适应等待,点击确认登录按钮
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="btn_tip"]/a/span').click()
# 直到获取到淘宝会员昵称才能确定是登录成功
taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ')))
# 输出淘宝昵称
print(taobao_name.text)
# 模拟向下滑动浏览
def swipe_down(self,second):
for i in range(int(second/0.1)):
#根据i的值,模拟上下滑动
if(i%2==0):
js = "var q=document.documentElement.scrollTop=" + str(300+400*i)
else:
js = "var q=document.documentElement.scrollTop=" + str(200 * i)
self.browser.execute_script(js)
sleep(0.1)
js = "var q=document.documentElement.scrollTop=100000"
self.browser.execute_script(js)
sleep(0.1)
# 爬取淘宝 我已买到的宝贝商品数据
def crawl_good_buy_data(self):
# 对我已买到的宝贝商品数据进行爬虫
self.browser.get("https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm")
# 遍历所有页数
for page in range(1,1000):
# 等待该页面全部已买到的宝贝商品数据加载完毕
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#tp-bought-root > div.js-order-container')))
# 获取本页面源代码
html = self.browser.page_source
# pq模块解析网页源代码
doc = pq(html)
# # 存储该页已经买到的宝贝数据
good_items = doc('#tp-bought-root .js-order-container').items()
# 遍历该页的所有宝贝
for item in good_items:
good_time_and_id = item.find('.bought-wrapper-mod__head-info-cell___29cDO').text().replace('\n',"").replace('\r',"")
good_merchant = item.find('.seller-mod__container___1w0Cx').text().replace('\n',"").replace('\r',"")
good_name = item.find('.sol-mod__no-br___1PwLO').text().replace('\n', "").replace('\r', "")
# 只列出商品购买时间、订单号、商家名称、商品名称
# 其余的请自己实践获取
print(good_time_and_id, good_merchant, good_name)
print('\n\n')
# 大部分人被检测为机器人就是因为进一步模拟人工操作
# 模拟人工向下浏览商品,即进行模拟下滑操作,防止被识别出是机器人
# 随机滑动延时时间
swipe_time = random.randint(1, 3)
self.swipe_down(swipe_time)
# 等待下一页按钮 出现
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.pagination-next')))
# 点击下一页按钮
good_total.click()
sleep(2)
if __name__ == "__main__":
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
chromedriver_path = "c://chromedriver.exe" #改成你的chromedriver的完整路径地址
weibo_username = "改成你的微博账号" #改成你的微博账号
weibo_password = "改成你的微博密码" #改成你的微博密码
a = taobao_infos()
a.login() #登录
a.crawl_good_buy_data() #爬取淘宝 我已买到的宝贝商品数据
# -*- coding: utf-8 -*-
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 pyquery import PyQuery as pq
from time import sleep
import random
#定义一个taobao类
class taobao_infos:
#对象初始化
def __init__(self):
#url = 'https://login.taobao.com/member/login.jhtml'
url = 'https://taobao.com'
#https://item.taobao.com/item.htm?spm=a21wu.241046-kr.4691948847.13.41cab6cbpi2Ajv&scm=1007.15423.84311.100200300000005&id=557437331692&pvid=80d0065c-3bd0-47c7-92d1-ca4ed23d812e
#url = 'https://taobao.com'
self.url = url
options = webdriver.ChromeOptions()
options.add_argument("disable-infobars") #
options.add_argument("--disable-extensions") # disabling extensions
options.add_argument("--disable-gpu") # applicable to windows os only
options.add_argument("--no-sandbox") # Bypass OS security model
options.add_argument('--disable-software-rasterizer')
options.add_argument("--disable-extensions") # disabling extensions
options.add_argument("--disable-dev-shm-usage") # overcome limited
options.add_argument('--verbose')
options.add_argument("lang=ko_KR") # 한국어!
# chrome에서 F11을 눌러 전체 화면으로 넓히는 옵션입니다.
#options.add_argument('--start-fullscreen')
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
options.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
# 웹드라이버가 실제 웹브라우저인것 처럼 속이기
#options.add_argument("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36")
#options.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko")
options.add_argument(
"user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
#webdriver.chromeoptions() add_argument refere
#options.add_argument("Referer": "https://store.naver.com/restaurants/detail")
options.add_argument("--Referer=https://s.taobao.com")
#chrome_options.add_argument("--no-referrers")
self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=options)
self.wait = WebDriverWait(self.browser, 10) #超时时长为10s
self.browser.get(self.url)
user_agent = driver.find_element_by_css_selector('#user-agent').text
print('User-Agent: ', user_agent)
sleep(100000)
#登录淘宝
def login(self):
# 打开网页
self.browser.get(self.url)
# 自适应等待,点击密码登录选项
self.browser.implicitly_wait(30) #智能等待,直到网页加载完毕,最长等待时间为30s
self.browser.find_element_by_xpath('//*[@class="forget-pwd J_Quick2Static"]').click()
# 自适应等待,点击微博登录宣传
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="weibo-login"]').click()
# 自适应等待,输入微博账号
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('username').send_keys(weibo_username)
# 自适应等待,输入微博密码
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('password').send_keys(weibo_password)
# 自适应等待,点击确认登录按钮
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="btn_tip"]/a/span').click()
# 直到获取到淘宝会员昵称才能确定是登录成功
taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ')))
# 输出淘宝昵称
print(taobao_name.text)
# 模拟向下滑动浏览
def swipe_down(self,second):
for i in range(int(second/0.1)):
#根据i的值,模拟上下滑动
if(i%2==0):
js = "var q=document.documentElement.scrollTop=" + str(300+400*i)
else:
js = "var q=document.documentElement.scrollTop=" + str(200 * i)
self.browser.execute_script(js)
sleep(0.1)
js = "var q=document.documentElement.scrollTop=100000"
self.browser.execute_script(js)
sleep(0.1)
# 爬取淘宝 我已买到的宝贝商品数据
def crawl_good_buy_data(self):
# 对我已买到的宝贝商品数据进行爬虫
self.browser.get("https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm")
# 遍历所有页数
for page in range(1,1000):
# 等待该页面全部已买到的宝贝商品数据加载完毕
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#tp-bought-root > div.js-order-container')))
# 获取本页面源代码
html = self.browser.page_source
# pq模块解析网页源代码
doc = pq(html)
# # 存储该页已经买到的宝贝数据
good_items = doc('#tp-bought-root .js-order-container').items()
# 遍历该页的所有宝贝
for item in good_items:
good_time_and_id = item.find('.bought-wrapper-mod__head-info-cell___29cDO').text().replace('\n',"").replace('\r',"")
good_merchant = item.find('.seller-mod__container___1w0Cx').text().replace('\n',"").replace('\r',"")
good_name = item.find('.sol-mod__no-br___1PwLO').text().replace('\n', "").replace('\r', "")
# 只列出商品购买时间、订单号、商家名称、商品名称
# 其余的请自己实践获取
print(good_time_and_id, good_merchant, good_name)
print('\n\n')
# 大部分人被检测为机器人就是因为进一步模拟人工操作
# 模拟人工向下浏览商品,即进行模拟下滑操作,防止被识别出是机器人
# 随机滑动延时时间
swipe_time = random.randint(1, 3)
self.swipe_down(swipe_time)
# 等待下一页按钮 出现
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.pagination-next')))
# 点击下一页按钮
good_total.click()
sleep(2)
if __name__ == "__main__":
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
chromedriver_path = "c://chromedriver.exe" #改成你的chromedriver的完整路径地址
weibo_username = "改成你的微博账号" #改成你的微博账号
weibo_password = "改成你的微博密码" #改成你的微博密码
a = taobao_infos()
a.login() #登录
a.crawl_good_buy_data() #爬取淘宝 我已买到的宝贝商品数据
# -*- coding: utf-8 -*-
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 pyquery import PyQuery as pq
from time import sleep
import random
#定义一个taobao类
class taobao_infos:
#对象初始化
def __init__(self):
#url = 'https://login.taobao.com/member/login.jhtml'
url = 'https://taobao.com'
self.url = url
options = webdriver.ChromeOptions()
options.add_argument("disable-infobars") #
options.add_argument("--disable-extensions") # disabling extensions
options.add_argument("--disable-gpu") # applicable to windows os only
options.add_argument("--no-sandbox") # Bypass OS security model
options.add_argument('--disable-software-rasterizer')
options.add_argument("--disable-extensions") # disabling extensions
options.add_argument("--disable-dev-shm-usage") # overcome limited
options.add_argument('--verbose')
# chrome에서 F11을 눌러 전체 화면으로 넓히는 옵션입니다.
#options.add_argument('--start-fullscreen')
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
options.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
# 웹드라이버가 실제 웹브라우저인것 처럼 속이기
options.add_argument("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36")
self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=options)
self.wait = WebDriverWait(self.browser, 10) #超时时长为10s
self.browser.get(self.url)
#登录淘宝
def login(self):
# 打开网页
self.browser.get(self.url)
# 自适应等待,点击密码登录选项
self.browser.implicitly_wait(30) #智能等待,直到网页加载完毕,最长等待时间为30s
self.browser.find_element_by_xpath('//*[@class="forget-pwd J_Quick2Static"]').click()
# 自适应等待,点击微博登录宣传
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="weibo-login"]').click()
# 自适应等待,输入微博账号
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('username').send_keys(weibo_username)
# 自适应等待,输入微博密码
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('password').send_keys(weibo_password)
# 自适应等待,点击确认登录按钮
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="btn_tip"]/a/span').click()
# 直到获取到淘宝会员昵称才能确定是登录成功
taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ')))
# 输出淘宝昵称
print(taobao_name.text)
# 模拟向下滑动浏览
def swipe_down(self,second):
for i in range(int(second/0.1)):
#根据i的值,模拟上下滑动
if(i%2==0):
js = "var q=document.documentElement.scrollTop=" + str(300+400*i)
else:
js = "var q=document.documentElement.scrollTop=" + str(200 * i)
self.browser.execute_script(js)
sleep(0.1)
js = "var q=document.documentElement.scrollTop=100000"
self.browser.execute_script(js)
sleep(0.1)
# 爬取淘宝 我已买到的宝贝商品数据
def crawl_good_buy_data(self):
# 对我已买到的宝贝商品数据进行爬虫
self.browser.get("https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm")
# 遍历所有页数
for page in range(1,1000):
# 等待该页面全部已买到的宝贝商品数据加载完毕
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#tp-bought-root > div.js-order-container')))
# 获取本页面源代码
html = self.browser.page_source
# pq模块解析网页源代码
doc = pq(html)
# # 存储该页已经买到的宝贝数据
good_items = doc('#tp-bought-root .js-order-container').items()
# 遍历该页的所有宝贝
for item in good_items:
good_time_and_id = item.find('.bought-wrapper-mod__head-info-cell___29cDO').text().replace('\n',"").replace('\r',"")
good_merchant = item.find('.seller-mod__container___1w0Cx').text().replace('\n',"").replace('\r',"")
good_name = item.find('.sol-mod__no-br___1PwLO').text().replace('\n', "").replace('\r', "")
# 只列出商品购买时间、订单号、商家名称、商品名称
# 其余的请自己实践获取
print(good_time_and_id, good_merchant, good_name)
print('\n\n')
# 大部分人被检测为机器人就是因为进一步模拟人工操作
# 模拟人工向下浏览商品,即进行模拟下滑操作,防止被识别出是机器人
# 随机滑动延时时间
swipe_time = random.randint(1, 3)
self.swipe_down(swipe_time)
# 等待下一页按钮 出现
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.pagination-next')))
# 点击下一页按钮
good_total.click()
sleep(2)
if __name__ == "__main__":
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
chromedriver_path = "c://chromedriver.exe" #改成你的chromedriver的完整路径地址
weibo_username = "改成你的微博账号" #改成你的微博账号
weibo_password = "改成你的微博密码" #改成你的微博密码
a = taobao_infos()
a.login() #登录
a.crawl_good_buy_data() #爬取淘宝 我已买到的宝贝商品数据
# -*- coding: utf-8 -*-
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 pyquery import PyQuery as pq
from time import sleep
import random
#定义一个taobao类
class taobao_infos:
#对象初始化
def __init__(self):
url = 'https://login.taobao.com/member/login.jhtml'
self.url = url
options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
options.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=options)
self.wait = WebDriverWait(self.browser, 10) #超时时长为10s
self.browser.get(self.url)
#登录淘宝
def login(self):
# 打开网页
self.browser.get(self.url)
# 自适应等待,点击密码登录选项
self.browser.implicitly_wait(30) #智能等待,直到网页加载完毕,最长等待时间为30s
self.browser.find_element_by_xpath('//*[@class="forget-pwd J_Quick2Static"]').click()
# 自适应等待,点击微博登录宣传
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="weibo-login"]').click()
# 自适应等待,输入微博账号
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('username').send_keys(weibo_username)
# 自适应等待,输入微博密码
self.browser.implicitly_wait(30)
self.browser.find_element_by_name('password').send_keys(weibo_password)
# 自适应等待,点击确认登录按钮
self.browser.implicitly_wait(30)
self.browser.find_element_by_xpath('//*[@class="btn_tip"]/a/span').click()
# 直到获取到淘宝会员昵称才能确定是登录成功
taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ')))
# 输出淘宝昵称
print(taobao_name.text)
# 模拟向下滑动浏览
def swipe_down(self,second):
for i in range(int(second/0.1)):
#根据i的值,模拟上下滑动
if(i%2==0):
js = "var q=document.documentElement.scrollTop=" + str(300+400*i)
else:
js = "var q=document.documentElement.scrollTop=" + str(200 * i)
self.browser.execute_script(js)
sleep(0.1)
js = "var q=document.documentElement.scrollTop=100000"
self.browser.execute_script(js)
sleep(0.1)
# 爬取淘宝 我已买到的宝贝商品数据
def crawl_good_buy_data(self):
# 对我已买到的宝贝商品数据进行爬虫
self.browser.get("https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm")
# 遍历所有页数
for page in range(1,1000):
# 等待该页面全部已买到的宝贝商品数据加载完毕
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#tp-bought-root > div.js-order-container')))
# 获取本页面源代码
html = self.browser.page_source
# pq模块解析网页源代码
doc = pq(html)
# # 存储该页已经买到的宝贝数据
good_items = doc('#tp-bought-root .js-order-container').items()
# 遍历该页的所有宝贝
for item in good_items:
good_time_and_id = item.find('.bought-wrapper-mod__head-info-cell___29cDO').text().replace('\n',"").replace('\r',"")
good_merchant = item.find('.seller-mod__container___1w0Cx').text().replace('\n',"").replace('\r',"")
good_name = item.find('.sol-mod__no-br___1PwLO').text().replace('\n', "").replace('\r', "")
# 只列出商品购买时间、订单号、商家名称、商品名称
# 其余的请自己实践获取
print(good_time_and_id, good_merchant, good_name)
print('\n\n')
# 大部分人被检测为机器人就是因为进一步模拟人工操作
# 模拟人工向下浏览商品,即进行模拟下滑操作,防止被识别出是机器人
# 随机滑动延时时间
swipe_time = random.randint(1, 3)
self.swipe_down(swipe_time)
# 等待下一页按钮 出现
good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.pagination-next')))
# 点击下一页按钮
good_total.click()
sleep(2)
if __name__ == "__main__":
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
# 使用之前请先查看当前目录下的使用说明文件README.MD
chromedriver_path = "c://chromedriver.exe" #改成你的chromedriver的完整路径地址
weibo_username = "改成你的微博账号" #改成你的微博账号
weibo_password = "改成你的微博密码" #改成你的微博密码
a = taobao_infos()
a.login() #登录
a.crawl_good_buy_data() #爬取淘宝 我已买到的宝贝商品数据