鱼C论坛

 找回密码
 立即注册
查看: 1906|回复: 6

在ooxx那一讲中的程序,

[复制链接]
发表于 2018-6-24 19:09:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import urllib.request
import os

def url_open(url):
    req=urllib.request.Request(url)
    req.add_header('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0')
    response=urllib.request.urlopen(url)
    html=response.read()

    return html
def get_page(url):
    html=url_open(url).decode('utf-8')

    a=html.find('comment-report-c')+23
    b=html.find (']',a)

    return html[a:b]
def find_imgs(url):
    html=url_open(url).decode('utf-8')
    img_addrs=[]
    a=html.find('img src=')
   
    while a!=-1:
      b=html.find('.jpg',a,a+255)
      if b!=-1:
         img_addrs.append(html[a+9:b+4])
      else:
          b=a+9
      a=html.find('img src=',b)

    return img_addrs
      
def save_imgs(folder,img_addrs):
    for each in img_addrs:
        filename=each.split('/')[-1]
        with open(filename,'wb') as f:
            img=url_open()
            f.write(img)

def download_mm(folder='XXOO',pages=20):
    os.mkdir(folder)
    os.chdir(folder)

    url="http://jandan.net/ooxx "
    page_num=int(get_page(url))

    for i in range(pages):
        page_num -=i
        page_url=url+'page-'+str(page_num)+'#comments'
        img_addrs=find_imgs(page_url)
        save_imgs(img_addrs)

if __name__=='__main__':
    download_mm()

程序是这样的,但是一运行就
Traceback (most recent call last):
  File "C:\Users\Shizhe\Documents\download_mm.py", line 54, in <module>
    download_mm()
  File "C:\Users\Shizhe\Documents\download_mm.py", line 45, in download_mm
    page_num=int(get_page(url))
  File "C:\Users\Shizhe\Documents\download_mm.py", line 12, in get_page
    html=url_open(url).decode('utf-8')
  File "C:\Users\Shizhe\Documents\download_mm.py", line 6, in url_open
    req.add_header('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0')
TypeError: add_header() missing 1 required positional argument: 'val'

我想请问一下,这是怎么回事
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-6-24 19:12:36 | 显示全部楼层
这个网站的图片链接被加密了,爬不了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-24 20:32:55 | 显示全部楼层
add_header有两个字符串参数。
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-25 00:10:31 | 显示全部楼层
视屏教程不再更新了么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-26 22:24:49 | 显示全部楼层
应该是这样吧,我的意见,不一定对
req.add_header('User-Agent‘, ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-27 14:23:56 | 显示全部楼层
selenium 模拟浏览器 了解一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-27 14:25:43 | 显示全部楼层
  1. import os
  2. import requests
  3. import time
  4. import re
  5. from random import randint
  6. import unittest
  7. from selenium import webdriver
  8. from selenium.webdriver.common.keys import Keys



  9. def get_dir():
  10.      '''判断文件夹是否存在,如果不存在就创建一个'''
  11.      filename = "picture"
  12.      if not os.path.isdir(filename):
  13.          os.makedirs(filename)
  14.      return filename

  15. class ooxx_spider(unittest.TestCase):
  16.     def setUp(self):
  17.         chrome_options = webdriver.ChromeOptions()
  18.         chrome_options.add_argument('--headless')
  19.         chrome_options.add_argument('--disable-gpu')
  20.         self.driver = webdriver.Chrome('C:\python3.6\chromedriver.exe', chrome_options=chrome_options)

  21.     def test_spider(self):
  22.         for i in range(1,63):
  23.             #url = 'http://jandan.net/ooxx/' + 'page-' + str(i) + "#comments"
  24.             url = 'http://jandan.net/pic/' + 'page-' + str(i) + "#comments"
  25.             self.driver.get(url)
  26.             print(url)
  27.             elem = self.driver.find_elements_by_xpath('//*[@class="commentlist"]/li/div/div/div/p/a')#/li/div/div/div/p/img
  28.             
  29.             for j in elem:
  30.                 print(j)
  31.                 self.save_img(j.get_attribute('href'))
  32.                
  33.             print('第{}页爬取成功'.format(i))

  34.     def save_img(self, res):
  35.         suffix = res.split('.')[-1]
  36.         if "gif" in suffix:
  37.              destination = 'picture/' + str(randint(1, 1000)) + str(randint(1, 1000)) + '.'+ suffix
  38.              r = requests.get(res)
  39.              time.sleep(2)
  40.              with open(destination, 'wb') as f:
  41.                  f.write(r.content)

  42.     def tearDown(self):
  43.         self.driver.close()

  44. if __name__ == '__main__':
  45.     get_dir()
  46.     unittest.main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-31 10:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表