#は/ usr / binに/ ENVのpython! #- * -コーディング:UTF-8 - * - #@time:2019年12月30日午前10時51分 #@Site: #@file:jd_iphone.py #@Software:PyCharm インポートJSONの インポート時間 インポートurllib3の インポートログ インポート要求 から pyquery インポートPyQuery からセレンインポートwebdriverをする urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) #fidder抓包忽略请求警告 ヘッダー= { "リファラー":" https://search.jd.com/ " " ユーザーエージェント":" Mozillaの/ 5.0(Windows NTの6.1; Win64の、x64の)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 78.0.3904.108サファリ/537.36 " 、 } #控制台日志输出 logging.basicConfig(レベル= logging.INFO、フォーマット= ' %(いるasctime)S - %(名)S - %(levelname)S - %(メッセージ)S ' ) logger_page = logging.getLogger(" jd_iphone_page " ) logger_detail = logging.getLogger(" jd_iphone_detail ") DEFのget_page_detail(をmaxP): product_list = [] p_no = 0 のためのページで範囲(をmaxP * 1,2、2 ): URL = ' https://search.jd.com/Search?keyword=iphoneapple&page= ' + STR(ページ)+ ' &クリック= 0 ' #はiPhone、リンクスクリーニング #RESP = requests.get(URL、ヘッダ=ヘッダ、確認してください= False)が #のブラウザウィンドウレスモード chrome_options = webdriver.ChromeOptions() (chrome_options.add_argumentを" -ヘッドレス" ) ドライバー= webdriver.Chrome(chrome_options = chrome_options) #ドライバ= webdriver.Chrome() driver.get(URL) driver.implicitly_wait( 10 ) #执行JS滚动条 JS = ''」 タイマ=たsetInterval(関数(){ VAR scrollTopスプライト= document.documentElement.scrollTop || document.body.scrollTopは、 VaRはispeed = Math.floor(document.body.scrollHeight / 100); IF(scrollTopスプライト> document.body.scrollHeight * / 100 90){ てclearInterval(タイマー); } console.log( 'scrollTopスプライト:' + scrollTopスプライト) console.log( 'scrollHeight:' + document.body.scrollHeight) window.scrollToは(0、+ scrollTopスプライトispeed) }、20) '' ' driver.execute_script(JS) time.sleep( 5 ) HTML = driver.page_source DOC = pyquery(HTMLパーサ= " HTML ")#パラメータなしパーサー= "HTML"はpyquery HTML解析文字列型、解決することはできないが、上記のタイプは、XHTMLである (logger_page.info " %sのページのデータを取得...... "%((+ 1ページ)/ 2 )) のための項目で DOC(" #J_goodsList李" []).items(): tmp_list = data_sku KEY_LIST = [] #のデータ情報のiPhone取り外すことなく認証キー、 #は、情報取得 data_sku = item.attr(' データSKU ' ) パラ = " .J_の%S "%のdata_sku 。価格 = item.find(パラ)。テキスト() #取得店舗の ショップitem.find =(' .J_im_icon ' )の.text() #のタブ tag_p = " #J_pro_%S "% タグ = item.find(tag_p)は.text() #の製品は、リンク 項目= item.find(" .glラップDIV-I-A " ) のためのフォントで item.find(' フォント' :).items() key_list.append(font.text()) のhref = item.attr (' HREF ' ) #アップルの携帯電話かどうかを判断 した場合(U ' りんご' で KEY_LIST)または(U ' iPhone ' で KEY_LIST)または KEY_LIST)(U ' アップル' 内 tmp_list.append(ショップ)または(U ' りんご' でKEY_LIST): もし " のhttp:" でHREF: HREF = HREF [5 :] tmp_list.append(HREF) tmp_list.append(価格) tmp_list.append(ショップ) tmp_list.append(タグ) product_list .append(tmp_list) 他: tmp_list.append(HREF) tmp_list.append(価格) tmp_list.append(タグ) product_list.append(tmp_list) p_no + =。1 logger_page.info(' 取得ページ%sの、%sの製品の... ... '%(((ページ+ 1)/ 2 )、p_no)) 他: 続行 #印刷(product_list) #の印刷(LEN(product_list)) リターンproduct_listの DEFのproduct_detail(一覧): NO = 0 Product_Info = [] のためのリンクで一覧: URL = ' HTTP:' + リンク[0] logger_detail.info(" 正在获取第%の条信息......"%(NO + 1 )) なし + = 1 detail_html = requests.get(URL、ベリファイ= 偽) DOC = PyQuery(detail_html.text、パーサ= " HTML " ) product_dic = { " タイトル":DOC(" .itemInfo -wrap div.sku名" )の.text()、 " jd_price ":リスト[無1] [1 ]、 " ショップ":リスト[無1] [2 ]、 " タグ」:リスト[NO- 1]〜[3 ] " 色":DOC(" #選択-ATTR-1 div.item " )の.text()、 " RAM ":DOC(" #選択-ATTR-2 div.item " )の.text()、 " style_buy "。 DOC(" #選択-ATTR-3 div.item " )の.text()、 #"増分":DOC( "#要約支援のdivスパン")のテキスト()。 } product_info.append(product_dic) #の印刷(」第%sの条iPhone信息: "%(NO + 1)) #のプリント(json.dumps(product_dic、コード= 'UTF-8'、ensure_ascii =偽)) 戻りproduct_info #の印刷(json.dumps(product_dic、エンコード= 'UTF-8'、ensure_ascii =偽))#字典中文输出 場合 __name__ == ' __main__ ' : リスト = get_page_detail(1 ) #の印刷(json.dumps(リスト、コード= 'UTF-8'、ensure_ascii =偽)) reasult = product_detail(リスト) プリント(json.dumps(reasult、エンコーディング= ' UTF-8 '、ensure_ascii =偽))
クロールの電力供給情報IPHONEの練習の手
おすすめ
転載: www.cnblogs.com/East-fence/p/12129371.html
ランキング