、輸入網址
quotes.toscrape.com/,進入網站首頁,觀察網頁的結構,我們發現網頁的內容很清晰,
主要分為:名人名言,作者,標簽三個主要字段,同時三個字段的內容為本次提取的內容。
2、確定需求,分析網頁結構
打開開發者工具,點擊networ進行網絡數據抓包分析,網站是以get方式進行請求,不需要攜帶參數,那我們就可以以request請求庫中的get()方法,進行模擬請求,需要帶上headers請求,模擬瀏覽器信息驗證,防止被網站服務器檢測為爬蟲請求。
也可以點擊開發者工具的最左邊小箭頭,可以幫助我們快速定位,網頁數據在element標簽頁所在的位置。
3、解析網頁結構,提取數據。
請求成功之后,可以開始提取數據啦~,我用的是xpath的解析方法,所以,先來解析xpath頁面,點擊最左邊小箭頭,可以幫助我們快速定位數據所,網頁數據在element標簽頁所在的位置.因為網頁的請求方式數據以列表的方式逐條排序,所以我們可以先定位整個列表的數據。在通過lxm中html解析器,逐個字段抓取并保存至列表,方便下一步的數據清洗。
4、保存至csv文件
源碼分享
import requests
from lxml import etree
import csv
url="https://quotes.toscrape.com/"
headers={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
res=requests.get(url,headers=headers).text
html=etree.HTML(res)
queto_list=html.xpath('//div[@class="col-md-8"]')
lists=[]
for queto in queto_list:
# 名言正文
title=queto.xpath('./div[@class="quote"]/span[1]/text()')
# 作者
authuor=queto.xpath('./div[@class="quote"]/span[2]/small/text()')
# 名言標簽
tags=queto.xpath('./div[@class="quote"]/div[@class="tags"]/a[@class="tag"]/text()')
# 將數據統一添加進列表中保存
lists.append(title)
lists.append(authuor)
lists.append(tags)
with open("./名人名言.csv",'w',encoding='utf-8',newline='\n') as f:
writer=csv.writer(f)
for i in lists:
writer.writerow(x)
以上就是Python爬蟲抓取名人名言網站的方法,希望對大家有所幫助。
文地址: https://medium.com/free-code-camp/how-to-make-your-html-responsive-by-adding-a-single-line-of-css-2a62de81e431
原文作者: Per Harald Borgen
翻譯作者: https://github.com/hanxiansen
在這篇文章中,我將教你如何使用 CSS Grid 來創建一個超酷的圖像網格圖,它將根據屏幕的寬度來改變列的數量。最精彩的地方在于:所有的響應特性被添加到了一行 css 代碼中。這意味著我們不必將 HTML 與丑陋的類名(如col-sm-4, col-md-8)混雜在一起,也不必為每個屏幕創建媒體查詢。ok,讓我們發車吧。
在本文中,我將繼續使用我在第一篇 CSS Grid 布局教程文章中的網格布局。然后,我們將在文章末尾添加圖片。下面是我們初始化網格的外觀:
HTML 代碼:
<div class="container"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> </div>
CSS 代碼:
.container { display: grid; grid-template-columns: 100px 100px 100px; grid-template-rows: 50px 50px; }
注意: 示例中有一些基礎的樣式,但我在這里沒有寫出來,因為這對 CSS 網格布局沒有任何影響
如果這段代碼讓你感到困惑,我建議你去好好讀下我的這篇文章 Learn CSS Grid in 5 minutes ,其中就詳細的解釋了布局的基礎知識。
讓我們讓列開始具有自適應特性吧。
CSS 柵格布局帶來了一個全新的值:fraction單位,fraction單位通常簡寫為fr,它允許你根據需要將容器拆分為多個塊。
讓我們將每一列更改為一個 fraction 單位寬:
.container { display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 50px 50px; }
結果是柵格布局將會把整個寬度分成三個 fraction,每列占據一個 fraction 單位,效果如下:
如果我們將grid-template-columns的值更改為1fr 2fr 1fr,第二列的寬度將會是其它兩列的兩倍。總寬現在是四個 fraction 單位,第二列占據兩個 fraction 單位,其它列各占一個 fraction。效果如下:
總的來說,fraction 單位值將使你可以很容易的更改列的寬度。
然而,上面列子并沒有給出我們想要的響應性,因為網格總是三列寬。我們希望網格能根據容器的寬度改變列的數量。要做到這一點,你必須學習如下三個概念:
repeat()
首先我們學習repeat()函數。這是一個強大的指定列和行的方法。讓我們使用repeat()函數來更改網格:
.container { display: grid; grid-template-columns: repeat(3, 100px); grid-template-rows: repeat(2, 50px); }
在上面代碼中,repeat(3, 100px)等于100px 100px 100px。第一個參數指定行與列的數量,第二個參數指定它們的寬度,因此它將為我們提供與開始時完全相同的布局:
然后是auto-fit。讓我們跳過固定數量的列,將3替換為自適應數量:
.container { display: grid; grid-gap: 5px; grid-template-columns: repeat(auto-fit, 100px); grid-template-rows: repeat(2, 100px); }
效果如下:
現在,柵格將會根據容器的寬度調整其數量。它會嘗試在容器中容納盡可能多的 100px 寬的列。但如果我們將所有列硬寫為 100px,我們將永遠沒法獲得所需的彈性,因為它們很難填充整個寬度。正如你在上圖看到的,網格通常在右側留有空白。
為了解決上述問題,我們需要minmax()。我們將 100px 替換為 minmax(100px, 1fr),代碼如下:
.container { display: grid; grid-gap: 5px; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); grid-template-rows: repeat(2, 100px); }
請注意,所有響應都發生在一行 css 代碼中
效果如下:
正如你所見,效果完美。minmax()函數定義的范圍大于或等于 min, 小于或等于 max。
因此,現在每列將至少為 100px。但如果有更多的可用空間,柵格布局將簡單地將其均分給每列,因為這些列變成了 fraction 單位,而不是 100px。
添加圖片
最后一步是添加圖片。這與 CSS Grid 布局無關,但讓我們看下代碼。
我們在每個網格中添加一個圖片標簽:
<div><img src="img/forest.jpg"/></div>
為了使圖片適應于每個條目,我們將其寬、高設置為與條目本身一樣,我們使用object-fit:cover。這將使圖片覆蓋它的整個容器,根據需要,瀏覽器將會對其進行裁剪。
.container > div > img { width: 100%; height: 100%; object-fit: cover; }
效果如下:
ok!現在你已經了解了 CSS Grid 布局中最復雜的概念之一了,請給自己一個贊吧。
瀏覽器兼容性
在結束本文前,我提下瀏覽器支持情況,在撰寫本文時,全球77%的網站將支持 CSS Grid,而且比例還在逐步攀升。
我想想2018將是 CSS 網格布局的元年。它將獲得突破,并成為前端開發者的必備技能,就像過去幾年 CSS Flexbox 布局發生的情況一樣。
天將為大家帶HTML的內聯框架,以及網頁進階設計,在想對網頁做出更進一步的完善時,我們可以使用JavaScript對網頁設計出更多的樣式以及使用響應式設計來設計出更加出眾的網頁外觀。
1、Iframe是一種可以在網頁內聯其他網頁的元素
2、Iframe語法為:<iframe arc=“URL”></iframe>(其中URL指向不同的網頁)
3、Iframe以height和width屬性來定義長度和寬度,示例:
運行結果:
4、在iframe中可以用frameborder屬性來定義是否顯示邊框,設置屬性為“0”的時候移除iframe的邊框,示例:
運行結果:
1、JavaScript是面向Web的編程語言,獲得了所有網頁瀏覽器的支持,是目前使用最廣泛的腳本編程語言之一,也是網頁設計和Web應用必須掌握的基本工具。
2、在HTML中是用<script>標簽來定義客戶端腳本(JavaScript)。
3、JavaScript的常見用途是圖像處理、表單驗證和內容的動態更改。
4、JavaScript更改內容的示例:
<!DOCTYPE html>
<html>
<head>
<title>javascript示例</title>
</head>
<body>
<button type="button" onclick="myCat()">點擊這里!</button>
<p id="eg1">看這里</p>
<script>
function myCat(){
document.getElementById("eg1").innerHTML="hello!";
}
</script>
</body>
</html>
運行結果:
點擊前
點擊后
Javascrip可以修改樣式,示例:
<!DOCTYPE html>
<html>
<body>
<h1>我的第一段 JavaScript</h1>
<p id="demo">JavaScript 可以更改 HTML 元素的樣式。</p>
<script>
function myFunction() {
document.getElementById("demo").style.fontSize="25px";
document.getElementById("demo").style.color="red";
document.getElementById("demo").style.backgroundColor="yellow";
}
</script>
<button type="button" onclick="myFunction()">點擊我!</button>
</body>
</html>
運行結果:
點擊前
點擊后
1、文件路徑描述了網站文件夾結構中某個文件的位置。
2、文件路徑會在連接外部文件時被用到:
l 網頁
l 圖像
l 樣式表
l JavaScript
3、絕對文件路徑是指向一個因特網文件的完整URL,示例:
<img src="https://www.w3school.com.cn/images/picture.jpg" alt="flower">
運行結果:
4、相對路徑指向了對于當前頁面的文件。
1、RWD指的是響應式Web設計(Responsive Web Design)。
2、RWD 能夠以可變尺寸傳遞網頁。
3、RWD 對于平板和移動設備是必需的。
創建響應式設計的一個方法,實在急來創建它,示例:
<!DOCTYPE html>
<html lang="en-US">
<head>
<style>
.city {
float: left;
margin: 5px;
padding: 15px;
width: 300px;
height: 300px;
border: 1px solid black;
}
</style>
</head>
<body>
<h1>Welcome to the New world</h1>
<h2>Resize this responsive page!</h2>
<br>
<div class="city">
<h2>London</h2>
<p>London is the capital city of England.</p>
<p>It is the most populous city in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.</p>
</div>
<div class="city">
<h2>Paris</h2>
<p>Paris is the capital and most populous city of France.</p>
</div>
<div class="city">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan, the center of the Greater Tokyo Area,
and the most populous metropolitan area in the world.</p>
</div>
</body>
</html>
運行結果:
4、另一個創建響應式設計的方法,是使用現成的 CSS 框架—Bootstrap。
5、Bootstrap 是最流行的開發響應式 web 的 HTML, CSS, 和 JS 框架。
6、Bootstrap 幫助您開發在任何尺寸都外觀出眾的站點:顯示器、筆記本電腦、平板電腦或手機,示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>Welcome to the New world</h1>
<p>Resize this responsive page!</p>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4">
<h2>London</h2>
<p>London is the capital city of England.</p>
<p>It is the most populous city in the United Kingdom,
with a metropolitan area of over 13 million inhabitants.</p>
</div>
<div class="col-md-4">
<h2>Paris</h2>
<p>Paris is the capital and most populous city of France.</p>
</div>
<div class="col-md-4">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan, the center of the Greater Tokyo Area,
and the most populous metropolitan area in the world.</p>
</div>
</div>
</div>
</body>
</html>
運行結果:
學完這一節對網頁的進階設計內容,是不是覺得對網頁設計有了更多的認識呢?
*請認真填寫需求信息,我們會在24小時內與您取得聯系。