python爬蟲學習筆記一
阿新 • • 發佈:2019-02-01
廢話不多說,直接上程式碼:
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資料,前臺進行渲染處理的,這個後面再研究吧。