---
# System prepended metadata

title: Python 爬蟲專案套件用法速查

---

### 資料綱目
1. product_name: 商品名稱
2. product_price_NTD: 商品價格
3. product_link: 商品連結
4. product_image: 商品圖片

### 滑鼠游標放置於網頁元素中間
Python 網路爬蟲與資料視覺化 > 7-27 & 7-28

### 從網路上下載圖檔
Python 網路爬蟲與資料視覺化 > 5-28

### 反反爬蟲 > 設定 Request Headers
https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html
```
import requests
 
 
headers = {
	"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", 
	"Accept-Encoding": "gzip, deflate, br", 
	"Accept-Language": "zh-TW,zh;q=0.9", 
	"Host": "example.com",  #目標網站 
	"Sec-Fetch-Dest": "document", 
	"Sec-Fetch-Mode": "navigate", 
	"Sec-Fetch-Site": "none", 
	"Upgrade-Insecure-Requests": "1", 
	"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" #使用者代理
}
 
response = requests.get(url="https://example.com", headers=headers)
```

### 反反爬蟲 > 設定 User-Agent
https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html
```
import requests
from fake_useragent import UserAgent
 
 
user_agent = UserAgent()
response = requests.get(url="https://example.com", headers={ 'user-agent': user_agent.random })
```

### 反反爬蟲 > 取消網頁中的彈出視窗
```
from selenium.webdriver.chrome.options import Options
import time
 
options = Options()
options.add_argument("--disable-notifications")
```

### 反反爬蟲 > 設定 Options
https://zhuanlan.zhihu.com/p/60852696

```
from selenium import webdriver
option = webdriver.ChromeOptions()

# 設定 user-agent
options.add_argument("user-agent=Your_Custom_User_Agent_String")

# 添加UA
options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')

# 指定浏览器分辨率
options.add_argument('window-size=1920x3000') 

# 谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--disable-gpu') 

 # 隐藏滚动条, 应对一些特殊页面
options.add_argument('--hide-scrollbars')

# 不加载图片, 提升速度
options.add_argument('blink-settings=imagesEnabled=false') 

# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument('--headless') 

# 以最高权限运行
options.add_argument('--no-sandbox')

# 手动指定使用的浏览器位置
options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" 

#添加crx插件
option.add_extension('d:\crx\AdBlock_v2.17.crx') 

# 禁用JavaScript
option.add_argument("--disable-javascript") 

# 设置开发者模式启动，该模式下webdriver属性为正常值
options.add_experimental_option('excludeSwitches', ['enable-automation']) 

# 禁用浏览器弹窗
prefs = {  
	'profile.default_content_setting_values' :  {  
		'notifications' : 2  
	 }  
}  
options.add_experimental_option('prefs',prefs)


driver=webdriver.Chrome(chrome_options=chrome_options)
```

### CSS Selector
1. 選取包含特定字串的 `<div>`
`div:contains('特定字串')`
　
2. 選取 `<div class="test">` 的下一個 `<div>`
`div.test + div`