当前位置:首页 > python > 正文

python爬虫抓数据

  • python
  • 2024-04-15 22:00:23
  • 2900

1、4.python爬虫之新建scrapy爬虫项目(抓取和保存)
1.在win10中,用win+r打开cmd,更改新项目的目录
2.新建Scrapy项目的命令:
可以使用pycharm打开项目文件夹并编辑项目
3.items.py
声明抓取的字段
4创建一个新的随机爬虫
使用Scrapygenspiderdoubanmovie命令“movie.douban.com”创建一个爬虫。
5.运行爬虫
5.1创建运行脚本
(1).在与Scrapy.cfg相同的目录中创建pycharm调试脚本run.py。 为避免首次运行爬虫输入密码,内容如下:
6.修改robottxt协议
修改设置中的ROBOTSXTXT_OBEY=True参数为False,因为默认是True,这意味着必须遵循robots.txt的规则,robots.txt是一个符合Robot协议的文件。 它存储在网站的服务器中。 它的作用是通知搜索引擎爬虫。 此网站目录中的哪些网站不希望您抓取并包它们?一旦Scrapy启动,它首先访问网站的robots.txt文件,然后确定网站的抓取范围。 要查看robots.txt,您可以直接转到robots.txt后面的URL。
一般在构建爬虫系统时,应该编写自己的ItemPipeline,并且可以在open(path)中选择自己的保存路径
参考:#scrapy事件和爬虫数据保存为txt,json,mysql
7.1json格式保存时乱码的处理办法:
Scrapy取豆瓣书,保存一个乱码的json文件
中文默认是Unicode,这样如:
\u5317\u4eac\u5927\u5b66
放入settings.py文件中:
这应该可以解决问题
第二种解决方案
或者在cmd中传入-sFEED_EXPORT_ENCODING='utf-8'
参考:http://www.cnblogs.com/tinghai8/p/9700300.html


2、怎样用python爬取疫情数据
importrequests
frombs4importBeautifulSoup
import
importjson
#1.提交疫情主页请求(数据来自丁香园)
response=requests。 get('http://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page=response.content.decode()
#2.疫情主页
soup=BeautifulSoup(home_page,'lxml')
script=soup.find(id='getAreaStat')
text=script.string
#3。 提取数据得到json格式的数据
json_str=re.findall(r'\[.+\]',text)[0]
#4.输入python
last_day_corona_virus=json.loads(json_str)
#5。 以json格式保存最后一天的数据
withopen('data/last_day_coronavirus.json','w')asfp:
json.dump(last_day_corona_virus,fp,ensure_ascii=False)