python大作业二
一、存入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大作业二的更多相关文章
- python大作业
爬取西刺代理 生成请求头 #encoding = utf-8; __all__ = ("Header"); import random; class Header(object): ...
- python大作业-图书管理系统
#缺少循环执行和错误处理 #add()函数 添加了循环执行 #错误处理:regist()函数 登录和退出选择的时候添加了错误处理 import sys import importlib importl ...
- 数据库大作业--由python+flask
这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...
- Python学习之编写三级菜单(Day1,作业二)
作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...
- c++小学期大作业攻略(二)整体思路+主界面
写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...
- 【大数据应用技术】作业十二|Hadoop综合大作业
本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 前言 本次作业是在<爬虫大作业>的基础上进行的 ...
- 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析
作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...
- 程设大作业xjb写——魔方复原
鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...
随机推荐
- nessus安装、msfconsole辅助模块使用(网安全实训第三天)
本期内容:nessus安装.msfconsole辅助模块使用.后渗透攻击 1. nessus安装 2.msfconsole辅助模块使用 3.后渗透攻击 1. nessus安装 (1)下载nessus ...
- python爬虫--爬虫介绍
一 爬虫 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样 2.互联网建立的目的? 互联网的核心价值在于数据的共享/传递:数据是存放于一台 ...
- shell概述与echo命令
一.Shell概述 1.什么是shell? 由此可见shell是用户与系统进行交互的接口,通过执行各种命令来完成时间处理与调度. 2.shell分类 Shell类别 易学性 可移植性 编辑性 快捷性 ...
- SpringBoot内容聚合
分类整理一些内容,方便需要时回过头来看,整理不易,如有疏漏,请多担待!之后要查看这篇文章,公众号后台回复 “Springboot聚合” SpringBoot+Mybatis多模块(module)项目搭 ...
- leaflet视频监控播放(附源码下载)
前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...
- Navicat Premium从远程Mysql数据库复制到本地数据库的方法
之前做在本地测试总是先去现在下一份数据库的sql,然后再在本地建一个相同的,导入sql.然后觉得有点麻烦,现在发现了一个直接远程直接复制一份到本地的方法 工具:Navicat Premium 1.先连 ...
- sql server无法连接本地服务器
当连接sql server本地服务器 报一下错误: 标题: 连接到服务器 ------------------------------ 无法连接到 localhost. ---..... 打开wind ...
- QT获取linux下的当前用户名
故事背景:客户端启动的时候需要加载机器/home/xx/test.jpg的图片作为背景图,但是有的机器用户名叫AAA,有的机器名叫BBB,所以我需要获取当前用户的home目录 技术调研:QStanda ...
- [认证 & 授权] 3. 基于OAuth2的认证(译)
OAuth 2.0 规范定义了一个授权(delegation)协议,对于使用Web的应用程序和API在网络上传递授权决策非常有用.OAuth被用在各钟各样的应用程序中,包括提供用户认证的机制.这导致许 ...
- css实现图片动画效果
需求 项目里有个消息中心,当有消息的时候,小铃铛图标可以晃两下,提示当前有信息. 实现过程 书写css 使用css的keyframe属性,配合animation. @keyframes ringing ...