亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python實現爬取圖書封面

2020-02-15 22:13:04
字體:
來源:轉載
供稿:網友

本文實例為大家分享了python實現爬取圖書封面的具體代碼,供大家參考,具體內容如下

kongfuzi.py

利用更換代理ip,延遲提交數據,設置請求頭破解網站的反爬蟲機制

import requestsimport randomimport time  class DownLoad():  def __init__(self):    self.ip_list = ['191.33.179.242:8080', '122.72.108.53:80', '93.190.142.214:80', '189.8.88.125:65301',            '36.66.55.181:8080', '170.84.102.5:8080', '177.200.72.214:20183', '115.229.115.190:9000']     self.user_agent_list = [      'User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',      'User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',      'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11'    ]   def get(self, url, proxy=None, timeout=20, num=5):    print("正在請求%s" % url)    UA = random.choice(self.user_agent_list)    headers = {'User-Agent': UA}     if proxy == None:      try:        return requests.get(url, headers=headers, timeout=timeout)      except:        if num > 0:          time.sleep(10)          return self.get(url, num=num - 1)        else:          time.sleep(10)          IP = ''.join(random.choice(self.ip_list).strip())          proxy = {'http': IP}          return self.get(url, proxy=proxy, timeout=timeout)    else:      try:        IP = ''.join(random.choice(self.ip_list).strip())        proxy = {'http': IP}        return requests.get(url, headers=headers, proxy=proxy, timeout=timeout)      except:        if num > 0:          time.sleep(10)          IP = ''.join(random.choice(self.ip_list).strip())          proxy = {'http': IP}          print("正在更換代理")          print("當前代理%s" % proxy)          return self.get(url, proxy=proxy, num=num - 1)

main.py

將爬取的圖片保存到本地,然后展示到界面

import kongfuziimport osimport requestsimport bs4from tkinter import *from PIL import Image, ImageTk  # 下載圖片,生成圖片地址列表和圖書信息列表def download():  baseUrl = "http://search.kongfz.com"  keyword = e1.get()  url = baseUrl + "/product_result/?select=0&key=" + keyword  print("下載鏈接:" + url)  show(url)  # bs4處理def changesoup(html):  htm = html.content  html_doc = str(htm, 'utf-8')  soup = bs4.BeautifulSoup(html_doc, "html.parser")  return soup  # 圖書信息集合def bookinfo(soup):  # 圖書價格列表  price = []  soupprice = soup.select(".first-info .f_right .bold")  for i in soupprice:    price.append(i.string)   # 書店名列表  storename = []  soupstorename = soup.select(".text a span")  for each in soupstorename:    if each.string == None:      soupstorename.remove(each)  for i in soupstorename:    storename.append(i.string)   # 商家地區列表  place = []  soupplace = soup.select(".user-place")  for i in soupplace:    place.append(i.string)   # 書名列表  bookname = []  bookname1 = soup.select(    ".search-wrap .search-main .search-main-result .result-content .result-list .item .item-info .title .link")  # print(len(bookname1))  # print(bookname1)  for each in bookname1:    print(each)    # a = bs4.BeautifulSoup(each, "html.parser")    a = each.get_text()    print(a)    # type(a)    # a = bs4.BeautifulSoup(a, "html.parser")    # b = a.get_text()    bookname.append(a)  # print(bookname)  # print(len(bookname))   return bookname, price, place, storename  # 保存圖片def imgsave(soup):  dirName = "image"  os.makedirs(dirName, exist_ok=True)  filePathList = []  imgUrl = soup.select(".search-main-result .result-content .result-list .item .item-img .img-box img")   # print(imgUrl)  if not imgUrl:    print("沒有找到當前節點下圖片")  else:    i = 0    for imageUrls in imgUrl:      # 找到圖片地址 獲取它      downloadUrl = imageUrls.get('src')      # if downloadUrl == "/searchfront/img/error.jpg":      #   downloadUrl = "http://book.kongfz.com/img/pc/error.jpg"      print("打印要下載的圖片地址:", downloadUrl)      #   http://book.kongfz.com/img/pc/error.jpg      # 分割字符      split = downloadUrl.split("/")      # 只保留最后一個元素      fileName = str(i) + "-" + os.path.basename(split[len(split) - 1])      print("文件名:" + fileName)      # 建立一個新路徑      filePath = os.path.join(dirName, fileName)      filePathList.append(filePath)      if not os.path.exists(filePath):        imageUrlPath = requests.get(downloadUrl)        # 檢查當前網絡是否請求成功        imageUrlPath.raise_for_status()        # 'wb'二進制模式打開img適用        imageFile = open(filePath, 'wb')        for image in imageUrlPath.iter_content(10000):          # 把每次遍歷的文件圖像都存儲進文件夾中          imageFile.write(image)        # 關閉文件        imageFile.close()      i = i + 1  return filePathList # 圖片展示def show(url):  xz = kongfuzi.DownLoad()  html = xz.get(url)   # 添加代理ip到ip_list  add_ip = e2.get()  xz.ip_list.append(add_ip)   soup = changesoup(html)  bookname, price, place, storename = bookinfo(soup)  # print(bookname)  # print(price)  # print(place)  # print(storename)  filePathList = imgsave(soup)  root1 = Toplevel()  root1.geometry("1720x800")  root1.title("孔網圖片爬取")   # 處理圖片,轉換成可以顯示  photo = []  temp = []  for each in filePathList:    temp = Image.open(each)    photo.append(ImageTk.PhotoImage(temp))   canvas = Canvas(root1, width=1700, height=800, scrollregion=(0, 0, 0, 4000)) # 創建canvas  canvas.place(x=10, y=10) # 放置canvas的位置   frame = Frame(canvas) # 把frame放在canvas里  frame.place(width=1680, height=800)   for i in range(50):    # 圖片行列    rownum = int(i / 5)    columnnum = i % 5     # photo = ImageTk.PhotoImage(Image.open(filePathList[i]))    imgLabel1 = Label(frame, image=photo[i], width=280, height=280)    imgLabel1.grid(row=rownum * 5, column=columnnum, padx=10, pady=5)     infoLabel1 = Label(frame, text="書名:" + bookname[i], bg="#FFF8DC", justify=LEFT)    infoLabel1.grid(row=rownum * 5 + 1, column=columnnum, padx=45, pady=2, sticky=W)    infoLabel2 = Label(frame, text="價格:" + price[i] + "元", bg="#FFF8DC", justify=LEFT)    infoLabel2.grid(row=rownum * 5 + 2, column=columnnum, padx=45, pady=2, sticky=W)    infoLabel3 = Label(frame, text="發貨地區:" + place[i], bg="#FFF8DC", justify=LEFT)    infoLabel3.grid(row=rownum * 5 + 3, column=columnnum, padx=45, pady=2, sticky=W)    infoLabel4 = Label(frame, text="書店:" + storename[i], bg="#FFF8DC", justify=LEFT)    infoLabel4.grid(row=rownum * 5 + 4, column=columnnum, padx=45, pady=2, sticky=W)   vbar = Scrollbar(canvas, orient=VERTICAL) # 豎直滾動條  vbar.place(x=1680, width=20, height=800)  vbar.configure(command=canvas.yview)  canvas.config(yscrollcommand=vbar.set) # 設置  canvas.create_window((800, 2000), window=frame)   mainloop()  if __name__ == '__main__':  # 界面  root = Tk()  root.title("孔網圖片爬取")  e1 = Entry(root)  e2 = Entry(root)  e1.grid(row=0, column=0, padx=20, pady=20)  e2.grid(row=0, column=2, padx=20, pady=20)  label1 = Label(root, text="關鍵字", width=10).grid(row=0, column=1, padx=10, pady=5)  label2 = Label(root, text="添加代理ip", width=10).grid(row=0, column=3, padx=10, pady=5)  btn1 = Button(root, text="搜索", width=10, command=download).grid(row=1, column=1, padx=10, pady=5)  # print(e1.get())  mainloop()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久美男| 日韩在线观看网站| 亚洲剧情一区二区| 国产精品国产三级国产aⅴ浪潮| 国产亚洲欧美aaaa| 91欧美精品成人综合在线观看| 国产精品亚洲激情| 日韩视频永久免费观看| 欧美国产第一页| 一区二区欧美日韩视频| 日韩久久免费电影| 久久久国产精品免费| 成人高清视频观看www| 91精品久久久久久久久不口人| 亚洲自拍高清视频网站| 精品伊人久久97| 超在线视频97| 97婷婷大伊香蕉精品视频| 欧美与黑人午夜性猛交久久久| 欧美激情区在线播放| 亚洲福利在线观看| 亚洲最新视频在线| 日韩精品中文字幕久久臀| 成人网在线免费观看| 91沈先生在线观看| 久久久国产91| 日韩成人久久久| 亚洲第一av网| 日韩一二三在线视频播| xvideos国产精品| 国产精品一区久久| 91精品国产综合久久香蕉922| 欧美黄色片视频| 久久久久久久999精品视频| 17婷婷久久www| 亚洲精品日韩久久久| 亚洲影院在线看| 亚洲午夜精品久久久久久久久久久久| 2019日本中文字幕| 亚洲一区二区三| 日韩av免费在线观看| 久久在线免费观看视频| 国产精品人成电影| 国产精品成人va在线观看| 亚洲一区二区免费在线| 亚洲影院色在线观看免费| 久久精品国产亚洲一区二区| 久久天天躁狠狠躁夜夜躁2014| 欧美成人精品在线观看| 国产精品成人品| 欧美成年人在线观看| 亚洲精品国产美女| 成人精品一区二区三区电影免费| 2019中文字幕免费视频| 红桃视频成人在线观看| 91免费精品国偷自产在线| 国产成人精品a视频一区www| 亚洲丁香婷深爱综合| 国产国语刺激对白av不卡| 色综合久久天天综线观看| 38少妇精品导航| 成人性生交大片免费看视频直播| 这里只有视频精品| 日本国产一区二区三区| 最好看的2019的中文字幕视频| 国产日韩视频在线观看| 91亚洲国产成人精品性色| 国产精选久久久久久| 日韩在线视频中文字幕| 成人深夜直播免费观看| 成人黄色免费片| 两个人的视频www国产精品| 欧美网站在线观看| 亚洲国产一区二区三区四区| 亚洲成年人在线| 欧美午夜精品久久久久久人妖| 亚洲欧美一区二区三区在线| 国产午夜精品一区二区三区| 欧美一级片一区| 欧美一级视频一区二区| 国产欧美va欧美va香蕉在线| 成人久久精品视频| 日韩成人在线电影网| 国色天香2019中文字幕在线观看| 国产精品女视频| 最近2019中文免费高清视频观看www99| 日韩美女在线看| 国产精品国产亚洲伊人久久| 成人免费视频a| 亚洲色图激情小说| 亚洲黄色www| 国产精品亚洲精品| 国产日产欧美精品| 国产精品成人va在线观看| 91老司机在线| 欧美激情一区二区三级高清视频| 欧美最猛性xxxx| 狠狠爱在线视频一区| 日av在线播放中文不卡| 日韩av中文在线| 欧美激情视频网址| 国产香蕉精品视频一区二区三区| 91av国产在线| 国产aⅴ夜夜欢一区二区三区| 亚洲成人网久久久| 中文字幕日韩精品在线观看| 在线视频亚洲欧美| 亚洲一区二区久久久| 欧美劲爆第一页| 亚洲女同性videos| 久久精品国产2020观看福利| 欧美大全免费观看电视剧大泉洋| 亚洲丝袜av一区| 中文字幕无线精品亚洲乱码一区| 国产精品96久久久久久又黄又硬| 91av视频在线观看| 国产免费一区二区三区在线能观看| 久久亚洲国产精品成人av秋霞| 最新国产精品亚洲| 久久国产精品亚洲| 亚洲视频一区二区三区| 国产精品一区二区三区成人| 9.1国产丝袜在线观看| 日本精品视频在线观看| 亚洲欧美资源在线| 亚洲精品自拍第一页| 日韩经典一区二区三区| 亚洲最大激情中文字幕| 欧美日韩在线第一页| 欧美日韩国产精品一区| 热re91久久精品国99热蜜臀| 亚洲一区二区三区在线视频| 国产一区二区欧美日韩| 久久九九全国免费精品观看| 亚洲视频在线视频| 日韩最新中文字幕电影免费看| 中文字幕国产亚洲2019| 色狠狠久久aa北条麻妃| 精品久久久久久中文字幕| 亚洲精品白浆高清久久久久久| 久久精品视频在线播放| 日韩成人在线视频| 亚洲国产另类 国产精品国产免费| 欧美成人免费视频| 精品成人乱色一区二区| 亚洲欧美精品中文字幕在线| 久久中文字幕国产| 亚洲a成v人在线观看| 九九久久国产精品| 亚洲欧美日韩久久久久久| 国产伊人精品在线| 亚洲国产精品资源| 8x拔播拔播x8国产精品| 欧美最猛黑人xxxx黑人猛叫黄| 久久亚洲欧美日韩精品专区| 国产成人97精品免费看片| 国产女同一区二区| 17婷婷久久www| 日日噜噜噜夜夜爽亚洲精品| 久久精品一区中文字幕| 久久精品一偷一偷国产| 这里只有精品在线观看| 久久亚洲精品国产亚洲老地址| 成人性生交大片免费看视频直播|