1. HTML的代碼文件
(1)打開Hbuilder開發(fā)工具,新建項目,點擊右鍵新建一個HTML文檔。
(2)在文檔中寫HTML代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>產(chǎn)品列表</title>
</head>
<body>
這是產(chǎn)品頁面
<b>好好學習,天天向上</b>
<h1>好好學習,天天向上</h1>
</body>
</html>
溫馨提示:
常用的快捷鍵:
Ctrl+s:保存
ctrl+c:復制
ctrl+x:剪切
ctrl+v:粘貼
2. HTML的基本結(jié)構
對于HTML文件的后綴名一般為“html”或“htm”
2.1HTML的標簽格式
(1)什么是HTML標簽?
HTML標簽是有開始標簽和結(jié)束標簽組成
開始標簽:是被尖括號包圍的元素名。
結(jié)束標簽:是被尖括號包圍的斜杠和元素名
<元素>內(nèi)容 </元素>
例如:<b>好好學習天天向上</b>
注意:有些HTML標簽是沒有結(jié)束標簽的, <hr/>
(2)單標簽和雙標簽
雙標簽:例如:<b></b>
單標簽:<hr/> <br/>
(3) 標簽的屬性
<font size="1">好好學習</font>
<font size="7">好好學習</font>
<h1 title="h1" style="color: red;">
我是一個標題標簽
</h1>
3. HTML基本結(jié)構的認識
<!--<!DOCTYPE html>:文檔聲明,告知瀏覽器文檔使用哪種HTML或XHTML規(guī)范,讓瀏覽器通過正確的方式解析我們的網(wǎng)頁,讓網(wǎng)頁能夠正確的顯示。-->
<!DOCTYPE html>
<!-- <html>標簽:是網(wǎng)頁的跟標簽-->
<html>
<!--head是網(wǎng)頁頭,一般表示網(wǎng)頁中描述信息-->
<head>
<!--
meta:提供網(wǎng)頁的相關信息,有利于搜索引擎收錄
charset="UTF-8": 設置網(wǎng)頁編碼方式為utf-8
name="Keywords" :設置網(wǎng)頁關鍵字
name="viewport": 設置網(wǎng)頁視窗大小
-->
<meta name="Keywords" content="HTML5前端開發(fā)工程師入門到精通課程"/>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<!-- <title></title>:表示網(wǎng)頁的標題 -->
<title></title>
</head>
<body>
<!--
<body></body>:網(wǎng)頁的主體內(nèi)容,用戶呈現(xiàn)的內(nèi)容,比如文字,圖片,鏈接,視頻……
-->
</body>
</html>
4. HTML的注釋
<!--這里是注釋的內(nèi)容-->
5. HTML的編碼問題
常見編碼個格式:
UTF-8:國際通用的編碼格式
GBK/GB2312:中文編碼字符
HTML的編碼:<meta charset="UTF-8">
6. HTML規(guī)范
(1)html標簽都是有尖括號包圍的標簽,比如<b>
(2)標簽通常是成對存在,<b></b>,<h1></h1>
(3)HTML不區(qū)分大小寫,我們建議小寫。
(4)HTML可以嵌套,但是允許交叉嵌套
正確寫法:<b> <h1>我很粗</h1> </b>
錯誤寫法:
<b> <h1>我很粗 </b></h1>
篇主要介紹爬取500彩票網(wǎng),獲取所有雙色球的開獎結(jié)果,寫入到csv文件。
(1) 分析標題
通過分析,發(fā)現(xiàn)標題信息在如下地方顯示:
私信小編007即可獲取小編精心準備的資料呢!如有需要源碼請單獨私信!
(2) 分析開獎號碼
通過分析,發(fā)現(xiàn)開獎號碼在如下地方顯示:
(3) 分析往期開獎結(jié)果url
通過分析,發(fā)現(xiàn)網(wǎng)頁是通過一個下拉菜單,選擇相應的期號,會自動跳轉(zhuǎn)對應的網(wǎng)站。
網(wǎng)站規(guī)律就是http://kaijiang.500.com/shtml/ssq/+"期號"+.shtml
2、思路分析
先提取網(wǎng)頁數(shù)據(jù),用Beautiful Soup從網(wǎng)頁抓取數(shù)據(jù),然后通過正則表達式,提取想要的數(shù)據(jù)。
3、代碼:
import requests from bs4 import BeautifulSoup import re #獲取網(wǎng)頁數(shù)據(jù),偽裝成瀏覽器 def gethtml(url): headers = { "Use-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) Apple WebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" } req = requests.get(url,headers = headers) req.encoding = "GBK" html = req.text bf = BeautifulSoup(html, "html.parser") return bf #爬取標題 def gettitle(html): titlehtml = html.find_all("td", class_="td_title01") titletxt = str(titlehtml).strip() p1 = r'shtml">(.*?)<f.*?<strong>(.*?)</strong>.*?</font>(.*?)</a> .*?right">(.*?)</span>' titles = re.compile(p1, re.S).findall(titletxt) qi = list(titles[0]) qi[2] = ('期') return ''.join(qi) #爬取紅色球 def getred(html): redhtml = html.find_all("li", class_="ball_red") redtxt = str(redhtml).strip() p1 = r'red">(.*?)</li>' reds = re.compile(p1, re.S).findall(redtxt) return '紅球:' + ' '.join(reds) #爬取藍色球 def getbule(html): bulehtml = html.find_all("li", class_="ball_blue") buletxt = str(bulehtml).strip() p1 = r'blue">(.*?)</li>' bules = re.compile(p1, re.S).findall(buletxt) return '藍球:' + ' '.join(bules) #獲取所有url def getlistnum(html): listnumhtml = html.find_all("span", class_="iSelectBox") p1 = r'href="(.*?)">' listnums = re.compile(p1, re.S).findall(str(listnumhtml)) return listnums[1:] url = 'http://kaijiang.500.com/shtml/ssq/18131.shtml' def main(): html = gethtml(url) htmlurls = getlistnum(html) for htmlurl in htmlurls: ssqhtml = gethtml(htmlurl) a = gettitle(ssqhtml) b = getred(ssqhtml) c = getbule(ssqhtml) #寫入txt文件 with open(r'D:\1.txt','a') as f: print(htmlurl) f.write(a + '\n'+ b + '\n'+ c + '\n') f.close() if __name__ == "__main__": main()
代碼自行拿去用吧!輸出文件:
到此結(jié)束!需要源碼請后臺私信小編即可哦!
假設需要劫持http響應并在html頁面中注入一段js代碼后再傳回瀏覽器,實現(xiàn)在瀏覽器出現(xiàn)一個彈框消息提醒。
由于原始html頁面編碼格式存在UTF-8、GBK等多種編碼格式,如果注入的js包含中文消息的話,那么在UTF-8或GBK編碼的頁面就會有一個出現(xiàn)亂碼。有沒有辦法做到不管是針對GBK、UTF-8編碼的頁面都能做到正常顯示而不會出現(xiàn)亂碼哪?
首先來分析一下產(chǎn)生亂碼的原因,我們在瀏覽器看到的信息都是通過圖形學手段在顯示器上呈現(xiàn)出來的,而實際保存在計算機硬件上的都是0和1(因為計算機實現(xiàn)是基于二進制),那么計算機要顯示、傳遞信息就需要依靠一套規(guī)則把一串串的0和1識別為正確的字符,這就是編碼。
例如01000001在ASCII編碼規(guī)則下對應字母A。相同的0/1串,不同的編碼解析出的字符一般是不同的,因此如果html頁面按照UTF-8的編碼解析正常,那么按照GBK的編碼解析就會是亂碼了。根據(jù)上面的示意圖,假設注入的js代碼為utf-8編碼格式,而原始html編碼格式也為UTF-8編碼格式,那么最終注入這部分中的中文就能正常顯示,但是如果原始html為GBK編碼,那注入的這部分js代碼的中文就會顯示亂碼。
有一種unicode統(tǒng)一編碼字符集,目標是把所有文字、字符統(tǒng)一編碼,也就是一串0/1組合在unicode字符集下對應的字符是唯一的,不會存在歧義。而js是支持解析unicode字符的,那么就可以在注入js中把要顯示的消息統(tǒng)一轉(zhuǎn)換為unicode編碼,瀏覽器端去解析這個unicode編碼,這樣不管原始html是UTF-8還是GBK,都能正常顯示中文。
原始注入js代碼關于中文字符的部分
// utf-8編碼格式
let message = "中文";
解決亂碼的注入js代碼關于中文字符的部分
// utf-8編碼格式
let message = "\\u4e2d\\u6587"; // 這個編碼對應上面的message"中文"
注意:
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。