Fix wiki images and ambiguous Unicode #2
@@ -1,6 +1,6 @@
|
|||||||
[English](Home) · **Dansk** · [Bahasa Malaysia](Home-ms)
|
[English](Home) | **Dansk** | [Bahasa Malaysia](Home-ms)
|
||||||
|
|
||||||
# Dag 48 – Scraping af python.org med Selenium
|
# Dag 48 - Scraping af python.org med Selenium
|
||||||
|
|
||||||
I denne lektion bruger vi Selenium til at læse de fem kommende begivenheder på
|
I denne lektion bruger vi Selenium til at læse de fem kommende begivenheder på
|
||||||
[python.org](https://www.python.org/) og samle dem i en dictionary:
|
[python.org](https://www.python.org/) og samle dem i en dictionary:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[English](Home) · [Dansk](Home-da) · **Bahasa Malaysia**
|
[English](Home) | [Dansk](Home-da) | **Bahasa Malaysia**
|
||||||
|
|
||||||
# Hari 48 – Mengikis python.org dengan Selenium
|
# Hari 48 - Mengikis python.org dengan Selenium
|
||||||
|
|
||||||
Dalam pelajaran ini kita menggunakan Selenium untuk membaca lima acara akan
|
Dalam pelajaran ini kita menggunakan Selenium untuk membaca lima acara akan
|
||||||
datang di [python.org](https://www.python.org/) dan menyusunnya dalam kamus
|
datang di [python.org](https://www.python.org/) dan menyusunnya dalam kamus
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
**English** · [Dansk](Home-da) · [Bahasa Malaysia](Home-ms)
|
**English** | [Dansk](Home-da) | [Bahasa Malaysia](Home-ms)
|
||||||
|
|
||||||
# Day 48 – Scraping python.org with Selenium
|
# Day 48 - Scraping python.org with Selenium
|
||||||
|
|
||||||
In this lecture we use Selenium to read the five upcoming events from
|
In this lecture we use Selenium to read the five upcoming events from
|
||||||
[python.org](https://www.python.org/) and organise them in a dictionary:
|
[python.org](https://www.python.org/) and organise them in a dictionary:
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
[English](Lecture-Steps) · **Dansk** · [Bahasa Malaysia](Lecture-Steps-ms)
|
[English](Lecture-Steps) | **Dansk** | [Bahasa Malaysia](Lecture-Steps-ms)
|
||||||
|
|
||||||
# Lektionens trin
|
# Lektionens trin
|
||||||
|
|
||||||
## Trin 1 – Åbn siden
|
## Trin 1 - Åbn siden
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`driver.get("https://www.python.org/")` indlæser siden i Chrome.
|
`driver.get("https://www.python.org/")` indlæser siden i Chrome.
|
||||||
|
|
||||||
**Hvad du får ud af det:** driveren er din fjernbetjening til en rigtig browser.
|
**Hvad du får ud af det:** driveren er din fjernbetjening til en rigtig browser.
|
||||||
Den skal altid lukkes igen, så den moderne kode bruger `try/finally`.
|
Den skal altid lukkes igen, så den moderne kode bruger `try/finally`.
|
||||||
|
|
||||||
## Trin 2 – Find widgetten med inspektionsværktøjet
|
## Trin 2 - Find widgetten med inspektionsværktøjet
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Højreklik på widgetten og vælg *Inspect*. Begivenhederne ligger i et element med
|
Højreklik på widgetten og vælg *Inspect*. Begivenhederne ligger i et element med
|
||||||
klassen `event-widget`; hver begivenhed er en `li` med et `time`- og et `a`-tag.
|
klassen `event-widget`; hver begivenhed er en `li` med et `time`- og et `a`-tag.
|
||||||
@@ -21,9 +21,9 @@ klassen `event-widget`; hver begivenhed er en `li` med et `time`- og et `a`-tag.
|
|||||||
**Hvad du får ud af det:** du lærer at læse HTML-træet og finde den beholder,
|
**Hvad du får ud af det:** du lærer at læse HTML-træet og finde den beholder,
|
||||||
der rummer præcis de data, du vil have.
|
der rummer præcis de data, du vil have.
|
||||||
|
|
||||||
## Trin 3 – Vælg de fem listepunkter med en CSS-selector
|
## Trin 3 - Vælg de fem listepunkter med en CSS-selector
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`driver.find_elements(By.CSS_SELECTOR, ".event-widget li")` returnerer de fem
|
`driver.find_elements(By.CSS_SELECTOR, ".event-widget li")` returnerer de fem
|
||||||
punkter. En klassebaseret selector er kortere og mere stabil end den lange
|
punkter. En klassebaseret selector er kortere og mere stabil end den lange
|
||||||
@@ -32,9 +32,9 @@ XPath, man kopierer fra inspektøren, og den rammer ikke urelaterede links.
|
|||||||
**Hvad du får ud af det:** du kender Seleniums locator-strategier og ved,
|
**Hvad du får ud af det:** du kender Seleniums locator-strategier og ved,
|
||||||
hvornår CSS-selectors slår XPath.
|
hvornår CSS-selectors slår XPath.
|
||||||
|
|
||||||
## Trin 4 – Byg dictionary'en
|
## Trin 4 - Byg dictionary'en
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
For hvert punkt læser vi `time` og `a` og gemmer dem under punktets indeks, med
|
For hvert punkt læser vi `time` og `a` og gemmer dem under punktets indeks, med
|
||||||
`enumerate` i stedet for en manuel tæller.
|
`enumerate` i stedet for en manuel tæller.
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
[English](Lecture-Steps) · [Dansk](Lecture-Steps-da) · **Bahasa Malaysia**
|
[English](Lecture-Steps) | [Dansk](Lecture-Steps-da) | **Bahasa Malaysia**
|
||||||
|
|
||||||
# Langkah pelajaran
|
# Langkah pelajaran
|
||||||
|
|
||||||
## Langkah 1 – Buka laman
|
## Langkah 1 - Buka laman
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`driver.get("https://www.python.org/")` memuatkan laman dalam Chrome.
|
`driver.get("https://www.python.org/")` memuatkan laman dalam Chrome.
|
||||||
|
|
||||||
**Apa yang anda peroleh:** driver ialah alat kawalan jauh untuk pelayar sebenar.
|
**Apa yang anda peroleh:** driver ialah alat kawalan jauh untuk pelayar sebenar.
|
||||||
Ia mesti ditutup semula, jadi kod moden menggunakan `try/finally`.
|
Ia mesti ditutup semula, jadi kod moden menggunakan `try/finally`.
|
||||||
|
|
||||||
## Langkah 2 – Cari widget dengan alat pemeriksa
|
## Langkah 2 - Cari widget dengan alat pemeriksa
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Klik kanan pada widget dan pilih *Inspect*. Acara berada dalam elemen berkelas
|
Klik kanan pada widget dan pilih *Inspect*. Acara berada dalam elemen berkelas
|
||||||
`event-widget`; setiap acara ialah `li` yang mengandungi teg `time` dan `a`.
|
`event-widget`; setiap acara ialah `li` yang mengandungi teg `time` dan `a`.
|
||||||
@@ -21,9 +21,9 @@ Klik kanan pada widget dan pilih *Inspect*. Acara berada dalam elemen berkelas
|
|||||||
**Apa yang anda peroleh:** anda belajar membaca pepohon HTML dan mencari
|
**Apa yang anda peroleh:** anda belajar membaca pepohon HTML dan mencari
|
||||||
bekas yang menyimpan data yang tepat seperti yang dikehendaki.
|
bekas yang menyimpan data yang tepat seperti yang dikehendaki.
|
||||||
|
|
||||||
## Langkah 3 – Pilih lima item senarai dengan pemilih CSS
|
## Langkah 3 - Pilih lima item senarai dengan pemilih CSS
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`driver.find_elements(By.CSS_SELECTOR, ".event-widget li")` mengembalikan lima
|
`driver.find_elements(By.CSS_SELECTOR, ".event-widget li")` mengembalikan lima
|
||||||
item. Pemilih berasaskan kelas lebih pendek dan lebih stabil daripada XPath
|
item. Pemilih berasaskan kelas lebih pendek dan lebih stabil daripada XPath
|
||||||
@@ -32,9 +32,9 @@ panjang yang disalin dari pemeriksa, dan ia tidak memadankan pautan lain.
|
|||||||
**Apa yang anda peroleh:** anda mengenali strategi locator Selenium dan bila
|
**Apa yang anda peroleh:** anda mengenali strategi locator Selenium dan bila
|
||||||
pemilih CSS lebih baik daripada XPath.
|
pemilih CSS lebih baik daripada XPath.
|
||||||
|
|
||||||
## Langkah 4 – Bina kamus
|
## Langkah 4 - Bina kamus
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Untuk setiap item kita baca `time` dan `a` lalu simpan di bawah indeks item itu,
|
Untuk setiap item kita baca `time` dan `a` lalu simpan di bawah indeks item itu,
|
||||||
dengan `enumerate` dan bukannya pembilang manual.
|
dengan `enumerate` dan bukannya pembilang manual.
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
**English** · [Dansk](Lecture-Steps-da) · [Bahasa Malaysia](Lecture-Steps-ms)
|
**English** | [Dansk](Lecture-Steps-da) | [Bahasa Malaysia](Lecture-Steps-ms)
|
||||||
|
|
||||||
# Lecture steps
|
# Lecture steps
|
||||||
|
|
||||||
## Step 1 – Open the page
|
## Step 1 - Open the page
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`driver.get("https://www.python.org/")` loads the page in Chrome.
|
`driver.get("https://www.python.org/")` loads the page in Chrome.
|
||||||
|
|
||||||
**What you gain:** the driver is your remote control for a real browser. It
|
**What you gain:** the driver is your remote control for a real browser. It
|
||||||
must always be closed again, so the modern code wraps it in `try/finally`.
|
must always be closed again, so the modern code wraps it in `try/finally`.
|
||||||
|
|
||||||
## Step 2 – Locate the widget with the inspector
|
## Step 2 - Locate the widget with the inspector
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Right-click the widget and choose *Inspect*. The events live inside an element
|
Right-click the widget and choose *Inspect*. The events live inside an element
|
||||||
with the class `event-widget`; each event is an `li` holding a `time` and an
|
with the class `event-widget`; each event is an `li` holding a `time` and an
|
||||||
@@ -22,9 +22,9 @@ with the class `event-widget`; each event is an `li` holding a `time` and an
|
|||||||
**What you gain:** you learn to read the HTML tree and find the container that
|
**What you gain:** you learn to read the HTML tree and find the container that
|
||||||
holds exactly the data you want.
|
holds exactly the data you want.
|
||||||
|
|
||||||
## Step 3 – Select the five list items with a CSS selector
|
## Step 3 - Select the five list items with a CSS selector
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`driver.find_elements(By.CSS_SELECTOR, ".event-widget li")` returns the five
|
`driver.find_elements(By.CSS_SELECTOR, ".event-widget li")` returns the five
|
||||||
items. A class-based selector is shorter and more stable than the long XPath
|
items. A class-based selector is shorter and more stable than the long XPath
|
||||||
@@ -33,9 +33,9 @@ copied from the inspector, and it does not match unrelated links.
|
|||||||
**What you gain:** you know the Selenium locator strategies and when CSS
|
**What you gain:** you know the Selenium locator strategies and when CSS
|
||||||
selectors beat XPath.
|
selectors beat XPath.
|
||||||
|
|
||||||
## Step 4 – Build the dictionary
|
## Step 4 - Build the dictionary
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
For every item we read `time` and `a` and store them under the item's index,
|
For every item we read `time` and `a` and store them under the item's index,
|
||||||
with `enumerate` instead of a manual counter.
|
with `enumerate` instead of a manual counter.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[English](Modernisation) · **Dansk** · [Bahasa Malaysia](Modernisation-ms)
|
[English](Modernisation) | **Dansk** | [Bahasa Malaysia](Modernisation-ms)
|
||||||
|
|
||||||
# Modernisering
|
# Modernisering
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[English](Modernisation) · [Dansk](Modernisation-da) · **Bahasa Malaysia**
|
[English](Modernisation) | [Dansk](Modernisation-da) | **Bahasa Malaysia**
|
||||||
|
|
||||||
# Pemodenan
|
# Pemodenan
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
**English** · [Dansk](Modernisation-da) · [Bahasa Malaysia](Modernisation-ms)
|
**English** | [Dansk](Modernisation-da) | [Bahasa Malaysia](Modernisation-ms)
|
||||||
|
|
||||||
# Modernisation
|
# Modernisation
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
**English** · [Dansk](Home-da) · [Bahasa Malaysia](Home-ms)
|
**English** | [Dansk](Home-da) | [Bahasa Malaysia](Home-ms)
|
||||||
|
|
||||||
- [Home](Home)
|
- [Home](Home)
|
||||||
- [Lecture steps](Lecture-Steps)
|
- [Lecture steps](Lecture-Steps)
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 138 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB |
Reference in New Issue
Block a user