python之大作业

一、题目要求

获得网页中A-Z所有名字并且爬取名字详情页中的信息,如姓名,性别,,说明等,并存放到csv中(网址:http://www.thinkbabynames.com/start/0/A

现在得到了所要的信息,但是还没有存入csv中

网页截图:

二、题目分析以及解答

首先要获得从A-Z网页连接,规律为只有最后一个字母改变,所以代码如下:

def get_url():#得到A-Z所有网站
    urls=[]
    for i in range(1, 27):
        i = chr(i+96)
        urls.append('http://www.thinkbabynames.com/start/0/%s'%i)
    return urls
    pass

利用循环得到从A-Z所有网页链接,然后再爬取所有名字,名字详情页的连接以及所需内容,代码如下:

def parse_html(url):#得到所有名字以及连接,爬取所需内容
    docx=requests.get(url)
    soup=BeautifulSoup(docx.content,'html.parser')
    c_txt1=soup.find('section',{'id':'index'}).findAll('b')
    url=[]
    for x in c_txt1:
        if x.find('a'):
            i=x.find('a')['href'].split("/")[-1]#使用正则表达式获得所有名字
            url.append('http://www.thinkbabynames.com/meaning/0/%s'%i)#获得所有名字详情页链接
            r=requests.get('http://www.thinkbabynames.com/meaning/0/%s'%i)
            result=r.text
            bs=BeautifulSoup(result,'html.parser')
            li=bs.find('div',class_='content').find('h1')
            print("EnNama:")
            Enname=li.text[8::1]#使用切片语法获得详情页名字(s[x:y:z]x为起始,y为终止,z为步长)
            print(Enname)
            print("Gender:")
            Gender=li.text[1:8:1]#使用切片语法获得详情页名字
            print(Gender)
            li1=bs.find('section',id='meaning').find('p')
            print("Description:")
            Description=li1.text
            print(Description)
            print()
    pass

 运行结果部分截图:

 下一步操作是把爬取到的信息存到csv中,正在努力中。

猜你喜欢

转载自www.cnblogs.com/sndd/p/12035073.html
今日推荐