語言爬蟲字段為空_我為什么建議前端將Python 作為第二語言?

前言

本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。

作者: 前端勸退師

PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

1. Python和ES6語法差別

基本類型

3d5d0a850bc4992d8aeceaa13bb07ef6.png

值得注意的是,盡管兩者都是動態類型,但python連接時并不會自動轉換類型。

// JavaScript
let coerced = 1;
let concatenated = coerced + 'string';
# Python
not_coerced = 1
concatenated = not_coerced + 'string'

直接報錯:TypeError: cannot concatenate 'str' and 'int' objects

只有提前把num轉換為字符串類型才能正確運行

# Python
not_coerced = 1
concatenated = str(not_coerced) + 'string'

2. Functions ormethods?

在JavaScript和Python中,函數和條件的結構極為相似。例如:

// JavaScript
function drSeuss(catInTheHat, thing1, thing2) {if (catInTheHat == true &&thing1 == true &&thing2 == true) {console.log('is cray');} else if (catInTheHat != true) {console.log('boring');} else {console.log('so boring');}
}
# Python
def dr_seuss(cat_in_the_hat, thing1, thing2):if cat_in_the_hat == True andthing2 == True andthing2 == True:print 'is cray'elif cat_in_the_hat != True:print 'boring'else:print 'so boring'

但在JavaScript中,“methods”的通俗定義是指語言規范中內置的方法,例如:Function.prototype.apply()。 在MDN上有對二者的解釋: 在大多數方面,Functionsmethods相同,但有兩個主要區別:

  • methods可以被隱式傳遞到調用該methods的對象上。
  • methods能夠對類中包含的數據進行操作。

然鵝,在JavaScript中,“類”只是語法糖的存在,稍后我們再進行對比。

3. 模板字符串

在模板字符串上,JavaScript之前是領先于python的。

// JavaScript
let exclamation = 'Whoa!';
let sentence = `They are really similar to Python.`;console.log(`Template Literals: ${exclamation} ${sentence}`);
# python
print '打印: {} {}'.format('Whoa.', 'Quite!')
# 打印: Yup. Quite!

{}充當占位符。 這種語法被詬病頗多,于是在后來的Python3.6版本中,又提供了一種字符串格式化語法——f-strings

直接對比:

name = "Tom"
age = 3
print(f"他叫 {name}, {age} 歲")
# "他叫Tom, 3 歲"

4. 參數默認值

JavaScript再次完美“借鑒”Python:

// JavaScript
function nom(food="ice cream") {console.log(`Time to eat ${food}`);
}nom();// Time to eat ice cream# Python
def nom(food="ice cream"):print 'Time to eat {}'.format(food)nom() # Time to eat ice cream

5. 其余參數和* args

Rest參數語法,使我們可以將不定數量的參數表示為數組,傳入函數中。

  • 在Python中,它們稱為* args
  • 在JavaScript中...xxx就表示為其余參數。
// JavaScript
function joke(question, ...phrases) {console.log(question);for (let i = 0; i > phrases.length; i++) {console.log(phrases[i]);}
}let es6Joke = "Why does JS single out one parameter?"
joke(es6Joke, "Because it doesn't", 'really like', 'all the REST of them!');// Why does JS single out one parameter?
// Because it doesn't
// really like
// all the REST of them!# Python
def pirate_joke(question, *args):print questionfor arg in args:print argpython_joke = "What's a Pyrate's favorite parameter?"pirate_joke(python_joke, "*args!", "*arrgs!", "*arrrgs!")# What's a Pyrate's favorite parameter?
# *args!
# *arrgs!
# *arrrgs!

6. Classes:類

眾所周知,ES6類實際上是語法糖。 Python具有內置的類,可以快速,輕松地進行面向對象的編程。

而JavaScript原型鏈繼承,是每個前端的必須課。

// JavaScript
class Mammal {constructor() {this.neocortex = true;}
}class Cat extends Mammal {constructor(name, years) {super();this.name = name;this.years = years;}eat(food) {console.log('nom ' + food);}
}# Python
class Mammal(object):neo_cortex = Trueclass Cat(Mammal):def __init__(self, name, years):self.name = nameself.years = yearsdef eat(food):print 'nom %s' % (food)fry_cat = Cat('Fry', 7)
fry_cat.eat('steak')

心而論,Python的寫法更優雅。。。

7. Modules and import:模塊

ES6的模塊語言借鑒于python,卻優秀于它。兩者之間有一些區別:

  • JavaScript導入是靜態的;Python是動態的。
  • JavaScript模塊必須顯式導出。在Python中,所有模塊均可導入。
  • JavaScript具有默認導出的概念。Python沒有。
# python
import mymodule
mymodule.myfunc()// javascript
import * as myalias from "./mymodule";
myalias.myfunc();

1. 導入分模塊

在javascript中,我們想導入分模塊直接解構賦值就可以了

// javascript
import { myvar, myfunc } from "./mymodule";
console.log(myvar);
myfunc();

而在python,其語義則相反:

# python
from mymodule import myvar, myfunc
print myvar
myfunc()

2. 導出空函數

如何想導出一段空函數,python需要用到“pass“關鍵詞占位,避免運行出錯。 mymodule.py:

# python
def myfunc(): pass// javascript
export function myfunc() {}

前端如何優雅學會Python?

許多前端對Python的熱情始于好奇,終于停滯。

距離實干做開發有技術差距,也無人指點提帶,也不知當下水平能干嘛?就在這樣的疑惑循環中,編程技能止步不前,而爬蟲是最好的進階方向之一。

網絡爬蟲是Python比較常用的一個場景,國際上,google在早期大量地使用Python語言作為網絡爬蟲的基礎,帶動了整個Python語言的應用發展。

就我個人發展而已,我也十分推薦以爬蟲為應用入門,原因有幾項:

  • 爬蟲是針對web頁面的一種應用技術,前端可以無痛銜接很多知識。
  • 爬蟲的第一步是獲取頁面源碼,然后做信息抽取。其中針對dome節點的class/id選擇,前端無需再度學習。
  • 爬蟲中的虛擬登錄及Selenium,可以提升前端對于自動化測試的理解。
  • 爬蟲的最終形態是搜索引擎,當中的SEO是每個前端都需要關注的點兒。
  • 在了解搜索引擎爬蟲的過程中,前端可以搞清楚服務端渲染SSR和單頁應用CSR的不同作用。

爬蟲分兩種方式:面向頁面和面向接口

  • 面向頁面,前端自然輕車熟路。
  • 面向接口,需要了解到如何用抓包軟件(Fiddler/Charles)。
  • 在這過程中,又能學會一項技能 - 抓包。以后不用再看著Network傻傻刷新了。

始于爬蟲,卻不止于爬蟲:

爬蟲—> 數據清洗 -> 數據庫操作 -> 數據清洗 -> 數據挖掘 -> 數據分析 ...

這一條鏈下去,你可以學到非常非常多的知識:

Scrapy爬蟲框架,Redis分布式事務,數據處理Pandas,自然語言分析NLP,完整實現數據可視化等等....

關于語言的討論,我非常贊同李兵老師的這段話:

579bba4ec8073f83d8a73073c0ee6efe.png

3. 潘石屹都在學Python

4f70411ce84949ecdd150f34d6e3849f.png

b6b27630313afe41aa9fe5e32fd225ed.png

.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534643.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534643.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

5 獲取當前訪問的控制名稱_LabVIEW編程技巧:網絡通信中如何獲取計算機名稱、IP地址等信息...

問題引出在網絡通訊編程中,經常需要獲取當前主機的名稱、IP地址等信息,在LabVIEW中如何獲取這些信息呢?下面以本機為例進行說明,先看一下本機的信息。在Windows系統中打開控制臺程序,輸入“ipconfig /all”指令&#x…

ios 通過kvc修改屬性會觸發kvo_iOS開發-KVC和KVO的理解

KVC和KVO看起來很專業,其實用起來還是比較簡單的,KVC(Key-value coding)可以理解為鍵值對編碼,如果對象的基本類型,那么鍵值對編碼實際上和get,set方法沒有區別,如果是屬性是另外一個對象,那么發現KVC用起來…

python stdin和stdout_stdin似乎比stdout(python)慢得多.為什么?

我有兩個需要相互通信的python程序(一個是子進程).目前我通過stdin和stdout這樣做.然而,寫入子進程的標準似乎很慢.a.py,一個采用任意行輸入并打印時間的程序:from time import time, sleepfrom sys import stdout, stdinwhile True:stdin.readline()stdout.write(%…

postman生成python代碼_別再用手敲了,這個工具可以自動生成python爬蟲代碼

我們在寫爬蟲代碼時,常常需要各種分析調試,而且每次直接用代碼調試都很麻煩所以今天給大家分享一個工具,不僅能方便模擬發送各種http請求,還能輕松調試,最重要的是,可以將調試最終結果自動轉換成爬蟲代碼&a…

電工結業試卷_電工技術基礎結業考試試卷

電工技術基礎結業考試試卷適用年級2016級秋6班電子、計算機專業班級 姓名 學號一、 判斷題(每題2分,共30分)1、 電位越高則電壓越大。2、萬用表的電壓、電路及電阻檔的刻度都是均勻的。3、 在任何情況下,電壓源和電流源之間總是可以等效變換的。 4、 電容…

表格里面怎么打多個√_Excel怎樣在表格里打√?

我們做表的時候有時會遇到輸入對或錯的情況。Excel表格里面輸入√和,普通的方法是直接插入特殊符號來進行對勾的輸入。這樣輸入起來1個2個還可以接受,但是如果頻繁輸入,那我們得想想簡單方法。比如我們直接在excel單元格里面輸入1顯示√&…

@value 默認值為null_JAVA8之妙用Optional解決判斷Null為空的問題

引言在文章的開頭,先說下NPE問題,NPE問題就是,我們在開發中經常碰到的NullPointerException.假設我們有兩個類,他們的UML類圖如下圖所示在這種情況下,有如下代碼user.getAddress().getProvince();這種寫法,…

mysql百萬數據根據索引查詢_mysql創建多列索引查詢百萬表數據的性能優化經驗分享...

最近發現最代碼網站中的收到的評論,提到我的,心情被贊的查詢異常緩慢,通過nginx日志發現響應時間快的在5s,慢的有13s,終于忍無可忍花時間來解決了。執行explain之后的截圖如下:可以看到possible_keys中有很…

php用到的mysql語句_PHP中常用到的一些MySQL語句_php

在php開發中,經常會使用到mysql語句,下面就為您列舉了一些經常使用的MySQL語句,希望對您平時的學習和開發工作能起到些許的作用。MySQL語句顯示數據庫或表:show databases;//然后可以use database_name;show tables;MySQL語句更改表名:alter …

mysql執行計劃性能_MySQL SQL性能分析Explain執行計劃

一. 執行計劃返回信息詳解①. 執行計劃所含字段輸出列含義id查詢標識select_type查詢類型table查詢涉及的表partitions匹配到的分區信息type連接類型possible_keys可能選擇的索引key實際使用的索引key_len實際使用的索引的長度ref和索引進行比較的列rows需要被檢索的大致行數fi…

mysql定時作業_mysql 讓一個存儲過程定時作業的代碼(轉)

1、在mysql 中建立一個數據庫 test1語句:create database test12、創建表examinfocreate table examinfo(id int auto_increment not null,endtime datetime,primary key(id));3 插入數據:insert into examinfo values(‘1‘,‘2011-4-23 23:26:50‘);4 …

table虛線邊框_web前端工程師7天0基礎到精通(TABLE+CSS制作《互聯世紀網》)

項目七 項目實踐:TABLECSS制作《互聯世紀網》實踐目標1、 熟悉CSS屬性2、 熟練運用CSS屬性控制網頁樣式3、 熟悉網頁制作流程項目簡介:通過上一章節的學習,我們了解了CSS樣式能更加方便、有效地控制網頁結構和布局網頁元素,大大提…

mixamo骨骼_mixamo動作庫的模型和動作綁定控制器的方法-上集

1.首先從網站下載帶調好動作的文件fbx,我們將fbx場景文件轉換成c4d場景文件。沒轉換之前轉換之后選擇場次,在文件菜單里找到當前場次到新文檔!2.我們將模型重置為Tpose方便后續操作,沒重置之前模型為k好的動作模式不能使用選中權重…

mysql 101_MySQL 調優/優化的 101 個建議!

原文:http://www.monitis.com/blog/101-tips-to-mysql-tuning-and-optimization/MySQL是一個強大的開源數據庫。隨著MySQL上的應用越來越多,MySQL逐漸遇到了瓶頸。這里提供 101 條優化 MySQL 的建議。有些技巧適合特定的安裝環境,但是思路是相…

數據安全:保護個人隱私和企業機密的關鍵

在當今數字化時代,數據已經成為了一種寶貴的資源。無論是個人還是企業,都離不開數據的支持。然而,隨著數據的不斷增長和廣泛應用,數據安全問題也日益突出。數據泄露、黑客攻擊、網絡詐騙等安全事件層出不窮,給個人和企…

python批量跑plsql_python實現自動化報表(Oracle/plsql/Excel/多線程)

# -*- coding: utf-8 -*-# Create time: 2019-10-16# Update time: 2019-11-28# Version: 1.0# Version: 2.0 增加多線程/出錯自動重新運行模塊# 導入模塊import cx_Oracleimport osimport pandas as pdimport pandas.io.sql as sqlimport timeimport openpyxlimport xlwings a…

mysql 配置郵件_SQL 郵件配置篇

exec sp_configure show advanced options,1RECONFIGURE WITHOVERRIDEgoexec sp_configure database mail xps,1RECONFIGURE WITHOVERRIDEgo--2.創建郵件帳戶信息EXECmsdb..Sysmail_add_account_spACCOUNT_NAME OCTMamiETL,--郵件帳戶名稱EMAIL_ADDRESS OCTMamiETL163.com,--發…

python 抽獎 配音樂_抖音上超好聽的神曲音樂,Python教你一次性下載

不知道什么時候開始,中國出現了南抖音、北快手的互文格局(東市買駿馬,西市買鞍韉…)。剛才提到了,之前比較喜歡刷抖音,對于我這種佛系程序猿,看網上這些整容妹子基本一個樣。喜歡抖音主要是兩個初衷,學做菜…

mysql批量寫入100萬數據_Mysql數據庫實踐操作之————批量插入數據(100萬級別的數據)-阿里云開發者社區...

第一種方法:使用insert into 插入從Redis每次獲取100條數據,根據條件去插入到Mysql數據庫中:條件:如果當前隊列中的值大于1000條,則會自動的條用該方法,該方法每次獲取從隊列的頭部每次獲取100掉數據插入到…

mysql多客戶端數據不同步_一種多終端設備上的數據同步方法

一種多終端設備上的數據同步方法【技術領域】[0001] 屬于移動通信技術領域,特別是涉及基于離網環境下多種移動終端設備之間的數 據同步的方法。 技術背景[0002] 90年代未,數據同步始于有線連接,如MAC機作為數據中心,與終端設備(iP…