# Crawl Dữ liệu
## Required Packages
- webdriver của selenium
- webdriver của Chrome hoặc các trình duyệt khác.
- bs4
## Một vài lệnh dùng khi đào tùy vào trang web
- Mở trang web bằng chromedriver vừa download:
```
driver = webdriver.Chrome('Path-To-ChromeDriver')
url = 'Link-Web-Crawling'
driver.get(url)
```
- Click vào một mục nào đó trong web:
```
Vào inspect copy xpath phần muốn click vào
driver.find_element_by_xpath("xpath")
(Chú ý hiện tại đang ở url là nơi cần click)
```
- Sử dụng bs4 (BeautifulSoup) để load page_source, crawl phần mình muốn:
```
#load page_source: BeautifulSoup(driver.page_source)
#kéo tới thẻ cần crawl, xem kiểu thẻ là gì, ví dụ là 'a' và class là gì : page_source.find_all('a', class_ = 'fl pro_gird_home left10 top10')
```
- Nếu nhiều sản phẩm, cần nhiều page (next page) thì tạo list links các sản phẩm bằng hàm:
```
Ví dụ:
def GetURL():
page_source = BeautifulSoup(driver.page_source)
profile = page_source.find_all('a', class_ = 'fl pro_grid_home left10 top10')
for link in profile:
links.append(link.get('href'))
return links
GetURL()
```
Ở đây href của thẻ chứa phần link tới sản phẩm thay vì click.
- Muốn sang trang sau khi crawl sản phẩm tạo hàm :
```
def GetNext():
page_source = BeautifulSoup(driver.page_source)
profile = page_source.find_all('a', class_ = 'Pageing fl') #các class sản phẩm sẽ giống nhau
for link in profile:
text = link.get_text()# lấy phần text trong thẻ 'a' và class_ phía trên
#print(text)
if ">" in text: #> nghĩa là qua page tiếp theo,< là về lại page cũ
next_page = link.get('href')
else:
next_page = None
drivers = webdriver.Chrome('C:\chromedriver\chromedriver')
url = next_page
drivers.get(url)
page_source = BeautifulSoup(drivers.page_source)
return page_source
GetNext()
```
## Hình click vào ">"

## Hình thẻ phần crawl

- Clear data bằng Regex của python.
Pipeline cơ bản dựa trên những công cụ trên:
1. Download webdriver.
2. Load page_source by webdriver.
3. Click vào mục sản phẩm bằng xpath.
4. Lập list các sản phẩm cần crawl.
5. Truy vập vào từng page bằng webdriver.
6. Tới phần cần crawl, tìm thẻ đó trong inspect.
7. Tạo vòng loop lặp qua hết sản phẩm.
8. Clear data mới crawl về.