1. 程式人生 > >python爬蟲學習筆記一

python爬蟲學習筆記一

廢話不多說,直接上程式碼:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def main():
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    driver = webdriver.Chrome(executable_path='G:/pythonLib/chromedriver.exe'
, options=chrome_options) driver.get("https://www.baidu.com") print(driver.page_source) driver.save_screenshot(r'baidu_explorer.png') driver.close() if __name__ == '__main__': main()

需要安裝

另附一段抓取網頁中的 圖片的程式碼(轉自傳送門
from urllib import request
from bs4 import BeautifulSoup
import re
import
time url = "https://www.zhihu.com/question/66313867" ''' request.urlopen(url)返回的是一個HTTPResposne型別的物件,它主要包含的方法有read()、 readinto()、getheader(name)、getheaders()、fileno()等函式和msg、version、status、reason、debuglevel、closed等屬性。 ''' resp = request.urlopen(url) buff = resp.read() # 網頁內容 print(resp.status) # 列印請求結果的狀態碼
html = buff.decode("utf8") print(html) # 列印請求到的網頁原始碼 soup = BeautifulSoup(html, 'html.parser') # 將網頁原始碼構造成BeautifulSoup物件,方便操作 # print(soup.prettify()) # 用Beautiful Soup結合正則表示式來提取包含所有圖片連結(img標籤中,class=**,以.jpg結尾的連結)的語句 links = soup.find_all('img', "origin_image zh-lightbox-thumb", src=re.compile(r'.jpg$')) print(links) # 設定儲存圖片的路徑,否則會儲存到程式當前路徑 path = r'G:\BeautifulGril' # 路徑前的r是保持字串原始值的意思,就是說不對其中的符號進行轉義 for link in links: print(link.attrs['src']) # 儲存連結並命名,time.time()返回當前時間戳防止命名衝突 request.urlretrieve(link.attrs['src'], path + '\%s.jpg' % time.time())

urllib和bs4通過pip安裝就好了:
pip install urllib
pip install bs4

對其稍作修改,我們根據知乎查詢“美女”的返回結果一個個爬取美女圖片:
from urllib import request
from bs4 import BeautifulSoup
import re
import time

url = "https://www.zhihu.com/search?type=content&q=%E7%BE%8E%E5%A5%B3"
'''
request.urlopen(url)返回的是一個HTTPResposne型別的物件,它主要包含的方法有read()、
readinto()、getheader(name)、getheaders()、fileno()等函式和msg、version、status、reason、debuglevel、closed等屬性。
'''
resp = request.urlopen(url)
buff = resp.read()  # 網頁內容
print(resp.status)  # 列印請求結果的狀態碼
html = buff.decode("utf8")
print(html)  # 列印請求到的網頁原始碼
soup = BeautifulSoup(html, 'html.parser')  # 將網頁原始碼構造成BeautifulSoup物件,方便操作
# print(soup.prettify())
# 提取查詢結果中的文章連結,例如:<meta itemprop="url" content="https://www.zhihu.com/question/25509555">
links = soup.find_all('meta', itemprop='url', content=re.compile(r'^https:'))
print(links)

for link in links:
    curUrl = link.attrs['content']
    print(link.attrs['content'])
    curBuff = request.urlopen(curUrl).read()  # 網頁內容
    curHtml = curBuff.decode("utf8")
    print(curHtml)  # 列印請求到的網頁原始碼
    curSoup = BeautifulSoup(curHtml, 'html.parser')  # 將網頁原始碼構造成BeautifulSoup物件,方便操作
    # 用Beautiful Soup結合正則表示式來提取包含所有圖片連結(img標籤中,class=**,以.jpg結尾的連結)的語句
    curlinks = curSoup.find_all('img', "origin_image zh-lightbox-thumb", src=re.compile(r'.jpg$'))
    print(curlinks)

    # 設定儲存圖片的路徑,否則會儲存到程式當前路徑
    path = r'G:\BeautifulGril'  # 路徑前的r是保持字串原始值的意思,就是說不對其中的符號進行轉義
    for jpgLink in curlinks:
        print(jpgLink.attrs['src'])
        # 儲存連結並命名,time.time()返回當前時間戳防止命名衝突
        request.urlretrieve(jpgLink.attrs['src'], path + '\%s.jpg' % time.time())

但是翻頁資料現在還無法獲取,查看了知乎的翻頁,它是通過api查詢的,返回的json資料,前臺進行渲染處理的,這個後面再研究吧。