写个爬虫爬取p站画师的画作

写个爬虫爬取一个p站画师的画作

  • 一、爬虫所用的库是什么?
  • 二、爬虫中出现的问题?
      • 1.python爬虫使用的库的下载
      • 2.编程中出现的问题和解决
      • 2.编程未解决的问题
  • 三、使用步骤
    • 1.函数
    • 2.读入数据

一、爬虫所用的库是什么?

bs4.BeautifulSoup
urllib.request.urlopen

二、爬虫中出现的问题?

1.python爬虫使用的库的下载

在多次添加pip的path到系统变量里面仍然显示pip不是系统的指定命令后,在重装python后,并且将script地址加入path后,打开cmd输入pip终于显示出
Usage:
pip [options]
(pip环境安装好成功的标志)

2.编程中出现的问题和解决

(1)根据py代码的简单化准则,我将爬取整个网站的代码,分离成通过循环爬取各网页代码,网址是这样的:http://acg17.com/category/meitu/pixiv-painter/page/1/
很容易发现可以通过page后面的数字遍历于是
让url =
“http://acg17.com/category/meitu/pixiv-painter/page/{:d}/”.format(temp)

(2)然后网页里面又有很多文章通过检查发现这些文章都在标签article里面那么可以用findall函数选择出标签article

(3)通过以上操作爬到了html的网址,也就是放我需要的图片的具体网页,发现图片的标签是p.img[‘src’],但是在这个标签下的还有一些logo和精灵图等必须要的文件,通过检查发现他们的第24位到28位是large,这里就可以用if语句分开
if p.img[‘src’][24] == l:
break

2.编程未解决的问题

pic是网站中遍历的网页中的具体文章,里面有很多a标签,但是pic.a的输出只有一个,百度了很久也没有找到原因,路过的大佬帮我看看吧。

三、使用步骤

1.函数

代码如下(示例):

from urllib.request import urlopen
from bs4 import BeautifulSoup


def worm(temp):
    cards = []
    url = "http://acg17.com/category/meitu/pixiv-painter/page/{:d}/".format(temp)
    html = urlopen(url)
    bsObj = BeautifulSoup(html.read(), features='html.parser')
    for pic in bsObj.findAll('article'):
        url2 = pic.a['href']
        html2 = urlopen(url2)
        bsObj2 = BeautifulSoup(html2.read(), features='html.parser')
        for photo in bsObj2.findAll('p'):
            if photo.img != None:
                if photo.img['src'][24] == 'l':
                    break
                elif photo.img['src'][-3:] == 'gif':
                    pass
                else:
                    cards.append(photo.img['src'])
        for card in cards:
            print(card)
for i in range(10, 20):
    print("这是第{:d}页的本子  (*∩_∩*)′ 献上 ".format(i))
    worm(i)
    print("\n")
print("所有的本子都爬好了哦  得意 <( ̄︶ ̄)>")

2.读入数据

代码如下(示例):

def worm(temp):
    cards = []
    url = "http://acg17.com/category/meitu/pixiv-painter/page/{:d}/".format(temp)
    html = urlopen(url)
    bsObj = BeautifulSoup(html.read(), features='html.parser')
    for pic in bsObj.findAll('article'):
        url2 = pic.a['href']
        html2 = urlopen(url2)
        bsObj2 = BeautifulSoup(html2.read(), features='html.parser')
        for photo in bsObj2.findAll('p'):
            if photo.img != None:
                if photo.img['src'][24] == 'l':
                    break
                elif photo.img['src'][-3:] == 'gif':
                    pass
                else:
                    cards.append(photo.img['src'])
        for card in cards:
            print(card)



for i in range(10, 20):
    print("这是第{:d}页的本子  (*∩_∩*)′ 献上 ".format(i))
    worm(i)
    print("\n")
print("所有的本子都爬好了哦  得意 <( ̄︶ ̄)>")

# 总结
爬虫的学习重在兴趣和使用,目前写的爬虫只能针对网站进行编写,换个网站就不行了,并且爬到本子的网址形式后没有进行进一步的下载操作。

你可能感兴趣的:(爬虫,python,数据分析)