zoukankan      html  css  js  c++  java
  • 初学爬虫(四)

    一.爬取目标

     网址:http://www.babynames.com/Names/search.php

    任务:分三个类别(Unisex,Male,Female)获取英文名的详情信息(Gender,EnName,Souce,Meaning,Description及详情URL)

    二.爬取思路

    1.首先在主页获取A-Z的html并保存到本地

    2.然后创建三个文件夹,把Unisex,Male,Female的婴儿名区分开

    3.再获取每个英文名的详情url

    4.获取信息详情

    5.根据性别不同存到不同的文件里

    三.   运用的技术:
    1:requests 模块请求,加headers  

    2:re 正则模块   基本只是用了简单的  .*?

    3:bs4  中的BeautifulSoup  运用了其中的类选择器

    4:lxml 中的 etree方法

    5:os 模块中的  判断文件是否存在方法

    6:csv 模块的存入和读取

    四.代码 略

    1)No module named 'lxml',用pip install lxml无法下载

    解决方案: 换成pip install --user lxml

     (2)爬取个人信息性别的时候一直提示错误

    原因:每个个人信息性别的属性是不一样的

     

    所以这个时候需要一个判断语句来获取性别

     Gender = soup.find_all("a", class_="logopink")
            #此处匹配分三种情况    因为分为男女  还有中性的
            if Gender :
                pattern = re.compile('<a class="logopink" href=".*?">(.*?)</a>')
                Gender = pattern.findall(str(Gender[0]))[0]
            elif soup.find_all("a", class_="logoblue"):
                Gender = soup.find_all("a", class_="logoblue")
                pattern = re.compile('<a class="logoblue" href=".*?">(.*?)</a>')
                Gender = pattern.findall(str(Gender[0]))[0]
            else:
                Gender = soup.find_all("a", class_="logogreen")
                pattern = re.compile('<a class="logogreen" href=".*?">(.*?)</a>')
                Gender = pattern.findall(str(Gender[0]))[0]

    六.运行结果及csv文件

     

     

  • 相关阅读:
    函数式编程语言
    Http
    小解_beginthreadex与_beginthreadex和CreateThread的区别
    Ring0句柄表遍历
    异步读写(ReadFileEx和ReadFile)之overlapped
    异步读写之利用完成历程
    windows核心编程第17章 一个文件两个缓存
    windows核心编程第17章 一个文件一个缓存
    windows核心编程第17章 一个文件 0个缓存
    进程间通信之利用CreateFilemapping()
  • 原文地址:https://www.cnblogs.com/qq991025/p/12076746.html
Copyright © 2011-2022 走看看