美文网首页
爬虫程序的一般步骤和伪代码实现

爬虫程序的一般步骤和伪代码实现

作者: 八神苍月 | 来源:发表于2017-06-05 01:18 被阅读98次

以爬取图片某网站图片为例,为代码如下所示:

start

set baseurl

request and parse

get_page_num

for 1:page_num  #所有页遍历

          request and parse

          get_each_page_link_url_list    

          get_each_page_link_url_num

          get_each_page_title_list  makedir(title)

                         for 1:link_url_num  #每页上面的所有图册遍历

                                       request and parse

                                       get_image_num  image_num

                                                     for 1:image_num  #每个图册上的所有图片遍历

                                                                 get_image_show_page_url

                                                                 request and parse

                                                                 get_image_real_href

                                                                 get_image_real_filename

                                                                 save(image,filename)

                                                    end

                          end

end

close

核心代码基本就是这些,其实半个小时就可以搞完,关键是对于网页分析要头脑清醒,提

前画好流程图,一般就3层for循环,偶尔复杂的网页会出现4层的循环结构。

加粗的变量表示我们要从网页中提取出来的内容。

核心代码:

baseurl='http://www.66bb.org/ArtDD/'

这是第一页,第二页和第三页怎么找,共有多少页怎么找

html=requests.get(baseurl,headers=headers)

html.encoding='gb2312'

soup=beautifulsoup(html.text,'lxml')

total_pages=get_total_pages(soup)

for page in range(1,total_pages):

html=requests.get(baseurl,headers=headers)

html.encoding='gb2312'

soup=beautifulsoup(html.text,'lxml')

#找到第一页上全部的地址和图册名称

all_url=soup.find(class_="fzltp").findAll('li')

#测试一下href 和 title 的获取方式是否正确

for num in range(1,len(all_url)):

#对每一页里面提取链接网页和标题,标题作为文件夹的名字

href=all_url[num].find('a')['href']

dirname=all_url[num].find('img')['alt']

baseurl_1='http://www.66bb.org'+href

html_1=requests.get(baseurl_1,headers=headers)

html_1.encoding='gb2312'

soup_1=beautifulsoup(html_1.text,'lxml')

total_pages_1=get_total_pages_1(soup_1)

#可以直接查找有多少张照片,这样就能算出来每张照片的网址

total_pages_1=soup_1.find('div',class_='tpm01').find

('font',color='blue').get_text()

total_pages_1=num(total_pages_1[2:-2])

for page_1 in range(1,total_pages_1):

#再获取下一层的网址

#baseurl_2='http://www.66xx.org/ArtDD/1894/'+str(page_1) +'.html'

baseurl_2=baseurl_1+str(page_1) +'.html'

html_2=requests.get(baseurl_2,headers=headers)

html_2.encoding='gb2312'

soup_2=beautifulsoup(html_2.text,'lxml')

#提取主图的地址和名字

image_href=soup_2.find(div,class_='imgbox').find('img')['src']

image_name=soup_2.find(div,class_='imgbox').find('img')['alt']

saveimage(image_href,image_name)

相关文章

网友评论

      本文标题:爬虫程序的一般步骤和伪代码实现

      本文链接:https://www.haomeiwen.com/subject/npobfxtx.html