Python爬虫-Request爬取网站内容

爬去网页-Requests,网站库-Scrapy,全网爬取-定制Google这种。

爬取京东一个页面的信息

import requests
url = 'http://item.jd.com/2967929.html'
 

    try:
        r = requests.get(url)
        r.raise_for_status()
        #如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        print(r.text[:1000])
    except:
        return("爬取失败")

爬取亚马逊的一个网页信息

import requests
url = 'https://www.amazon.cn/gp/yourstore/home/ref=nav_cs_ys'
 

    try:
        kv = {"user-agent":"Mozilla/5.0"}
        r = requests.get(url,header=kv)
        r.raise_for_status()
        #如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        print(r.text[:1000])
    except:
        return("爬取失败")

百度360搜索提交

import requests
keyword = "python"


    try:
        kv = {"wd":keyword}
        r = requests.get("http://baidu.com/s",params=kv)
        r.raise_for_status()
        #如果状态不是200,引发HTTPError异常
        print(r.request.url)
        r.encoding = r.apparent_encoding
        print(Len(r.text))
    except:
        return("爬取失败")

图片爬取

import requests
import os
url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1532578961266&di=45b828a25eab838db2716ad5ccc860ac&imgtype=0&src=http%3A%2F%2Fi.ce.cn%2Fce%2Fxwzx%2Fkj%2F201601%2F06%2FW020160106587980353192.jpg"
root = "/Users/python/Desktop"
path = root+url.split("/")[-1]
try:
	if not os.path.exists(path):
		os.mkdir(root)
	if not os.path.exists(path):
		r = requests.get(url)
		with open(path,"wb") as f:
			f.write(r.content)
			f.close()
			print("文本保存成功")
	else:
		print("文件已存在")
except:
	print(“爬取失败”)

IP地址归属地的自动查询

import requests
url = "http://m.ip138.com/ip.asp?ip="
try:
    r = request.get(url+"202.204.80.112")
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[-500:])
except:
    print("爬取失败")

网络爬虫视角,并不是点击,而是通过url实现的。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是简单的步骤: 1. 安装 scrapy 和 scrapy-redis ```python pip install scrapy scrapy-redis ``` 2. 创建一个 Scrapy 项目 ```python scrapy startproject douban_top250 ``` 3. 在 settings.py 中加入 scrapy-redis 的相关设置 ```python # 使用 scrapy-redis 的调度器 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 使用 scrapy-redis 的去重过滤器 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 允许暂停、恢复爬虫 SCHEDULER_PERSIST = True # 设置 redis 为 item pipeline ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 300 } # 设置 redis 服务器地址和端口号 REDIS_HOST = 'localhost' REDIS_PORT = 6379 ``` 4. 编写 spider ```python # coding:utf-8 import scrapy from scrapy import Request from scrapy_redis.spiders import RedisSpider class DoubanTop250Spider(RedisSpider): """爬取豆瓣电影 Top 250""" name = 'douban_top250' allowed_domains = ['movie.douban.com'] # 在 Redis 中设置起始爬取的 URL redis_key = 'douban:start_urls' def parse(self, response): # 获取电影列表 movie_list = response.css('.grid_view li') for movie in movie_list: # 获取电影名字和详情页 URL title = movie.css('.title::text').extract_first() detail_url = movie.css('.hd a::attr(href)').extract_first() yield Request(detail_url, callback=self.parse_detail, meta={'title': title}) # 获取下一页的链接 next_url = response.css('.next a::attr(href)').extract_first() if next_url: yield Request(next_url, callback=self.parse) def parse_detail(self, response): # 获取电影详情 title = response.meta['title'] score = response.css('.rating_num::text').extract_first() yield {'title': title, 'score': score} ``` 5. 运行 scrapy-redis 爬虫 首先要在终端中启动 redis 服务: ```python redis-server ``` 然后在一个终端中运行 scrapy-redis 爬虫: ```python scrapy runspider douban_top250.py ``` 在另一个终端中向 Redis 中添加起始 URL: ```python redis-cli lpush douban:start_urls https://movie.douban.com/top250 ``` 爬取结果会自动保存到 Redis 数据库中。你可以通过 redis-cli 或者其他 Redis 客户端查看结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值