新聞中心
2022年P(guān)ython技術(shù)類面試題總結(jié)(面試題+答案解析)
這是一位有著五年 Python 經(jīng)驗(yàn)的好友最近對(duì) Python 崗位面試后的一篇經(jīng)驗(yàn)總結(jié),從 Python 就業(yè)方向到 Python 面試題。
成都創(chuàng)新互聯(lián)主營玉溪網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,玉溪h5微信平臺(tái)小程序開發(fā)搭建,玉溪網(wǎng)站營銷推廣歡迎玉溪等地區(qū)企業(yè)咨詢
Python 就業(yè)方向 :
下面是 Python 面試知識(shí)點(diǎn),總結(jié)了華為、阿里巴巴等互聯(lián)網(wǎng)公司 Python 常問面試題。每道題都提供參考答案,希望能夠幫助你在求職面試中脫穎而出,找到一份高薪工作。
這些面試題分為 Python 基礎(chǔ)和 Python高級(jí),內(nèi)容包含: 基礎(chǔ)語法、文件操作、模塊與包、數(shù)據(jù)類型、元類、內(nèi)存管理與垃圾回收機(jī)制以及 Python 函數(shù) 等知識(shí)點(diǎn)。
(一) Python 基礎(chǔ)語法
(二) 文件操作
(三) 模塊與包
(四) 數(shù)據(jù)類型
(五)企業(yè)面試題
(一) 元類
(二)內(nèi)存管理與垃圾回收機(jī)制
(三)函數(shù)
(四) 面向?qū)ο?/p>
由于篇幅有限,這份 Python 面試寶典已經(jīng)被整理成了PDF文檔,有需要 Python 面試寶典全套完整文檔(面試題+答案解析)的可以 免費(fèi)領(lǐng)取!
如何優(yōu)雅地使用python采集阿里巴巴百萬商戶信息
Sublime是一款輕量文本編輯工具,可以用來快速編寫python腳本,這里就不多作介紹,詳情自己百度。本期所需的工具包是selenium,用戶需要自行安裝,可以通過pip命令快速安裝selenium,如下:
因?yàn)楸救讼惹耙呀?jīng)成功安裝selenium,所以這里提示“已經(jīng)安裝成功”,當(dāng)然要使用pip命令,必須提前安裝pip,自行百度,用戶安裝完上面的所有工具后我們就可以開始本期的裝逼之旅了。
第一步、查看網(wǎng)頁,確定抓取范圍。我們打開阿里巴巴采購首頁,我們發(fā)現(xiàn)阿里巴巴提供了廠商的搜索接口,如下所示:
第二步、我們?cè)囍阉鳌盎ぁ保榭吹玫降慕Y(jié)果,如下:
第三步、我們可以看到,我們要的基本信息都存在了,但是聯(lián)系方式?jīng)]有,我們?nèi)我獯蜷_一個(gè)廠商的頁面,可以看到“聯(lián)系”這個(gè)導(dǎo)航欄項(xiàng)目,點(diǎn)擊聯(lián)系,就可以看到廠商的聯(lián)系方式,我們?cè)趯⒆⒁饬Ψ诺骄W(wǎng)址url上,我們可以看到,聯(lián)系這個(gè)頁面的URL呈現(xiàn)規(guī)律性,如,并且聯(lián)系電話的位置是最前的,這極大地方便了我們采集我們想要的信息,如下:
第四步、啰嗦了那么多,直接開始我們的代碼:
首先使用python的selenium包打開一個(gè)Firefox瀏覽器窗口:
1
2
3
4
5
6
7
8
9
#! /usr/bin/env python
#coding:utf-8
from selenium import webdriver
import sys
# 解決中文報(bào)錯(cuò)的問題
reload(sys)
sys.setdefaultencoding('utf-8')
driver = webdriver.Firefox()
以上程序就可以打開Firefox瀏覽器窗口,并且打開的瀏覽器窗口對(duì)象為driver,接下來我們模擬登錄,找到阿里巴巴模擬登錄的地址為,我們通這個(gè)地址模擬登錄,并通過selenium的find_element_by_name方法獲取網(wǎng)頁中的DOM節(jié)點(diǎn),有學(xué)過JavaScript的同學(xué)應(yīng)該就會(huì)了解DOM節(jié)點(diǎn),具體的代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
url = '
k.635.1998096057.d1'
loginUrl = 't=trueredirect_url=
3Dlogin_target_is_blank_1688%26tracelog%3Dmember_signout_signin_s_reg'
driver = webdriver.Firefox()
time.sleep(3)
driver.get(loginUrl)
time.sleep(5)
driver.find_element_by_name("TPL_username").send_keys('這里是你的淘寶賬號(hào)')
driver.find_element_by_name("TPL_password").send_keys('這里是你的淘寶密碼')
driver.find_element_by_name("TPL_password").send_keys(Keys.ENTER)
time.sleep(5)
driver.get(url)
模擬登錄成功后我們讓頁面自動(dòng)跳轉(zhuǎn)到我們剛才搜索“化工”廠商的那個(gè)頁面,其中使用了time包里的sleep函數(shù),是為了防止在網(wǎng)速較差的時(shí)候,網(wǎng)頁加載速度較慢,源碼還未下載完畢就執(zhí)行查找節(jié)點(diǎn)的命令導(dǎo)致程序運(yùn)行失敗。接下來我們要做的是查找廠商的主頁并找到其聯(lián)系方式,并且發(fā)現(xiàn)廠商找到的結(jié)果共有100頁,在這里,為了使用方便,我們直接使用for循環(huán)來模擬點(diǎn)擊下一頁進(jìn)行采集。具體的所有源代碼如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#! /usr/bin/env python
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
import urllib
import urllib2
import sys
import os
import re
import csv
import numpy as np
# 解決中文報(bào)錯(cuò)的問題
reload(sys)
sys.setdefaultencoding('utf-8')
csvfile = file('data.csv', 'wb')
writer = csv.writer(csvfile)
writer.writerow((u'企業(yè)名稱'.encode('gbk'), u'主頁'.encode('gbk'), u'產(chǎn)品'.encode('gbk')
, u'聯(lián)系人'.encode('gbk'), u'電話'.encode('gbk'), u'地址'.encode('gbk')))
url = '
635.1998096057.d1'
loginUrl = '
full_redirect=trueredirect_url=
_is_blank_1688%26tracelog%3Dmember_signout_signin_s_reg'
driver = webdriver.Firefox()
time.sleep(3)
driver.get(loginUrl)
time.sleep(5)
driver.find_element_by_name("TPL_username").send_keys('這里輸入你的淘寶賬號(hào)')
driver.find_element_by_name("TPL_password").send_keys('這里輸入你的淘寶密碼')
driver.find_element_by_name("TPL_password").send_keys(Keys.ENTER)
time.sleep(5)
driver.get(url)
time.sleep(15)
user_agents = [
'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.
0.0.11',
'Opera/9.25 (Windows NT 5.1; U; en)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR
2.0.50727)',
'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-se
curity Firefox/1.5.0.12',
'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',
"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chr
omium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7",
"Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 ",
]
for page in xrange(1, 100):
try:
title = driver.find_elements_by_css_selector("a[class=list-item-title-text]")
product = driver.find_elements_by_xpath("http://div[@class=\"list-item-detail\"]/div[1]
/div[1]/a[1]")
print len(title)
pattern = re.compile('div class="contcat-desc".*?(.*?)/div', re.S)
telPattern = re.compile('dd(.*?)/dd', re.S)
membernamePattern = re.compile('a.*?class="membername".*?(.*?)/a', re.S)
addressPattern = re.compile('"address"(.*?)/dd', re.S)
for i in xrange(len(title)):
titleValue = title[i].get_attribute('title')
hrefValue = title[i].get_attribute('href') + 'page/contactinfo.htm'
productValue = product[i].text
agent = np.random.choice(user_agents)
headers = {'User-Agent' : agent, 'Accept' : '*/*', 'Referer' : ''}
request = urllib2.Request(hrefValue, headers=headers)
response = urllib2.urlopen(request)
html = response.read()
info = re.findall(pattern, html)
try:
info = info[0]
except Exception, e:
continue
tel = re.findall(telPattern, info)
try:
tel = tel[0]
tel = tel.strip()
tel = tel.replace(' ', '-')
except Exception, e:
continue
membername = re.findall(membernamePattern, html)
try:
membername = membername[0]
membername = membername.strip()
except Exception, e:
continue
address = re.findall(addressPattern, html)
try:
address = address[0]
address = address.strip()
except Exception, e:
address = ''
print 'tel:' + tel
print 'membername:' + membername
data = (titleValue.encode('gbk', 'ignore'), title[i].get_attribute('href'), pr
oductValue.encode('gbk', 'ignore'), membername, tel, address)
writer.writerow(data)
for t in title:
print t.get_attribute('title')
print t.get_attribute('href') + 'page/contactinfo.htm'
print len(product)
for p in product:
a = repr(p.text)
a = a.encode('gbk', 'ignore')
print a
print '#' * 50
js = 'var q=document.documentElement.scrollTop=30000'
driver.execute_script(js)
time.sleep(2)
page = driver.find_elements_by_css_selector("a[class=page-next]")
page = page[0]
page.click()
time.sleep(10)
except Exception, e:
print 'error'
continue
csvfile.close()
driver.close()
阿里巴巴用58小時(shí)講完的python!整整468集,拿走不謝
本套視頻共分4季
第一季 Python基礎(chǔ)。
第二季. Python深入和擴(kuò)展
第三季 網(wǎng)絡(luò)編程、多線程、擴(kuò)展庫
第四季算法、Python源碼、函數(shù)式編程、手工實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)
(私信方法:點(diǎn)擊主頁頭像旁邊的私信按鈕, 發(fā)送“學(xué)習(xí)”即可 !
當(dāng)前標(biāo)題:阿里巴巴python函數(shù) 阿里云 Python
網(wǎng)頁URL:http://fisionsoft.com.cn/article/doogoej.html