一、存入csv

上次爬取到了所需要的内容,但是没有存入到csv中,这次存入了csv文件中,代码如下:

import requests
from bs4 import BeautifulSoup
import csv
import io
import sys
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') 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 def get_text(url):#得到所有名字以及连接,爬取所需内容
headers = {'Cookie':"User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36"}
docx=requests.get(url)
soup=BeautifulSoup(docx.content,'html.parser')
c_txt1=soup.find('section',{'id':'index'}).findAll('b')
for x in c_txt1:
s=[]
if x.find('a'):
name=x.find('a')['href'].split("/")[-1]#使用正则表达式获得所有名字
#url.append('http://www.thinkbabynames.com/meaning/0/%s'%i)#获得所有名字详情页链接
if name:
r=requests.get('http://www.thinkbabynames.com/meaning/0/%s'%name)
result=r.text
bs=BeautifulSoup(result,'html.parser')
li=bs.find('div',class_='content').find('h1')
Enname=li.text[8::1]#使用切片语法获得详情页名字(s[x:y:z]x为起始,y为终止,z为步长)
Gender=li.text[1:8:1]#使用切片语法获得详情页名字性别
li1=bs.find('section',id='meaning').find('p')
Description=li1.text
#保存名字,性别,简介到s中
s.append(Enname)
s.append(Gender)
s.append(Description)
save_text(s)
return s
pass def save_text(s):#保存到csv中
with open('text.csv','a',encoding='utf_8_sig',newline='')as f:
writer = csv.writer(f)
writer.writerow(s) if __name__ == '__main__':
urls=get_url();
for url in urls:
get_text(url)

如上把得到的名字,性别,以及简介存入s中,再把s存到csv中。

二、csv文件截图

三、遇到的问题及解决方案

(1)爬取到所有名字时不能获得文本内容

解决方案:选择合适的正则表达式

docx=requests.get(url)
soup=BeautifulSoup(docx.content,'html.parser')
c_txt1=soup.find('section',{'id':'index'}).findAll('b')
for x in c_txt1:
s=[]
if x.find('a'):
name=x.find('a')['href'].split("/")[-1]#使用正则表达式获得所有名字

(2)获取名字详情页内容时,名字和性别在一起。

解决方案:使用切片语法分别获得名字和姓名分开存取

li=bs.find('div',class_='content').find('h1')
Enname=li.text[8::1]#使用切片语法获得详情页名字(s[x:y:z]x为起始,y为终止,z为步长)
Gender=li.text[1:8:1]#使用切片语法获得详情页名字性别

(3)在笔记本上运行时,访问量大

解决方案:分开来爬

如上图,改变range()函数中的数字来选择爬取部分网站以减少访问量。

这样既能够满足爬取要求,也不会被网站禁止爬取。

python大作业二的更多相关文章

  1. python大作业

    爬取西刺代理 生成请求头 #encoding = utf-8; __all__ = ("Header"); import random; class Header(object): ...

  2. python大作业-图书管理系统

    #缺少循环执行和错误处理 #add()函数 添加了循环执行 #错误处理:regist()函数 登录和退出选择的时候添加了错误处理 import sys import importlib importl ...

  3. 数据库大作业--由python+flask

    这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...

  4. Python学习之编写三级菜单(Day1,作业二)

    作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...

  5. c++小学期大作业攻略(二)整体思路+主界面

    写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...

  6. 【大数据应用技术】作业十二|Hadoop综合大作业

    本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 前言 本次作业是在<爬虫大作业>的基础上进行的 ...

  7. 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...

  8. 程设大作业xjb写——魔方复原

    鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...

  9. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

随机推荐

  1. GoLand不同目录(包)方法调用

    新手学go,跨目录调用方法是真的难,弄了好几天,几乎要放弃go了,在此演示一下如何跨目录(包)调用~ 需求是main.go调用model包下mysql.go中Query方法,目录结构如下. 要点: 1 ...

  2. NodeJS3-2基础API----Buffer(缓冲器)

    Buffer(缓冲器) Buffer是用于处理二进制数据流的 实例类似整数数组,大小固定(实例化之后,是多大就多大,不能进行变更) C++代码在V8 对外分配物理内存 Buffer是全局变量,没必要使 ...

  3. Java并发之synchronized关键字深度解析(二)

    前言 本文继续[Java并发之synchronized关键字深度解析(一)]一文而来,着重介绍synchronized几种锁的特性. 一.对象头结构及锁状态标识 synchronized关键字是如何实 ...

  4. 通过 Drone Rest API 获取构建记录日志

    Drone是一款CICD工具,提供rest API,简单介绍下如何使用API 获取构建日志. 获取token 登录进入drone,点头像,在菜单里选择token 复制token即可 API 介绍 Dr ...

  5. python连接数据库使用SQLAlchemy

    参考python核心编程 ORM(Object Relational Mapper),如果你是一个更愿意操作Python对象而不是SQL查询的程序员,并且仍然希望使用关系型数据库作为你的后端,那么你可 ...

  6. C#中提示:当前上下文中不存在名称“ConfigurationManager”

    场景 想要在程序中获取App.config中设置的内容. 想要通过 ConfigurationManager.AppSettings[key]; 来进行获取,已经添加 using System.Con ...

  7. SAP中的数据库表索引

    数据库表中的索引可以加快查询的速度.索引是数据库表字段的有序副本.附加的字段包含指向真实数据库表行的指针.排序可以使访问表行的速度变快,例如,可以使用二分搜索.数据库表至少有一个主索引,由它的key字 ...

  8. 使用SQL生成指定数据库的数据字典(MSSQL)

    USE DBNAME --指定要生成数据字典的数据库 GO SELECT 表名= CASE WHEN a.colorder= 1 THEN d.name ELSE '' END, 表说明= CASE ...

  9. 百度大脑UNIT3.0详解之知识图谱与对话

    如今,越来越多的企业想要在电商客服.法律顾问等领域做一套包含行业知识的智能对话系统,而行业或领域知识的积累.构建.抽取等工作对于企业来说是个不小的难题,百度大脑UNIT3.0推出「我的知识」版块专门为 ...

  10. Pikachu-XSS

    XSS(跨站脚本)概述 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS.一般XSS可以分为如下几种常见类型: ...