爬虫初探—零基础爬虫之旅(一)

128 阅读2分钟

一、工欲善其事必先利其器

  • 浏览器:chrome
  • 库:BeautifulSoup,urllib.request,requests,time

 二、分析思路

  1. 首先要明确你需要爬取的信息是那些,然后分析网页的简单实现逻辑。
  2. 找出需要爬取的信息在网页元素中的唯一标识。
  3. 编写代码,可以先编写爬取一页的信息,然后再来实现多页的爬取。

三、分析网页

  1. 进入jandan.net/ ,F12或者右键—>检查 进入分析页面,我们需要爬取煎蛋网的图片,看到图片地址是这个,这时候可以用右键—>Copy—>Copy selector 来获取css路径,将此参数传入soup.select()中,如果此方法不能正确获取需要的信息,可以用另外一种方法

    soup.find_all('img') 
     作用是查找所有的img标签并返回。
  2. 图片网址获取方法为.get('src') 意思是获取src的值及图片链接,查找到的图片地址存入列表中,然后用urllib.request.urlretrieve(url,filename)下载图片并保存到filename中。
    ''' python
    from bs4 import  BeautifulSoup
    import urllib.request,time,requests
    
    url = 'http://jandan.net/ooxx/page-'
    
    def get_data(url):
       headers = { 
          # 由于网站有反爬,所以需要这个参数,不然获取不到网页信息
          # 伪装成是人在浏览
          'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36Name'
       }
       download_links = []
       web_data = requests.get(url,headers=headers) # 请求网页
       soup = BeautifulSoup(web_data.text,'lxml') # 以'lxml'方式解析网页
       download_file = 'E://S/data_download/jiandan/ooxx/'
    
       for image in soup.find_all('img'):
          data='http:'+image.get('src')
          download_links.append(data)
    
       for item in download_links:
          urllib.request.urlretrieve(item,download_file+item[-8:])
          print('Done')
    
    def get_datas(start,end): # 获取所有页面的url
       for i in range(start,end): # 需要爬取的页面
          urls = url+str(i) 
          get_data(urls)
          time.sleep(2) # 间隔2S 防止被封
    get_datas(24,100)

四、知识罗列

  • for循环的使用,函数的建立。
  • 字符串的切片及拼接 :

    urllib.request.urlretrieve(item,download_file+item[-8:])
    
  • 图片的下载:

    urllib.request.urlretrieve(item,download_file+item[-8:])
  • requests,BeautifulSoup库的使用。

四、注意事项

  • 可以多用几种方式来确定识别元素的唯一性,这样才能提取需要的信息,如select()方法、find_all()方法等。
  • 遇到的坑 win10下出现PermissionError,最终找到问题是由于权限问题,将建好的文件权限改为完全控制即可。
  • 初次写,写的很小白,也很流水账,希望大佬们别介意。