为了账号安全,请及时绑定邮箱和手机立即绑定
    1. etree用来添加HTML和body标签

    data = """
      <div>
        <ul>
         <li class="item-0"><a href="link1">first</a></li>
         <li class="item-in"><a href="link2"><span class="bold">second</span></a></li>
         <li class="item-0"><a href="link3">third</a></li>
        </ul>
      </div>
    """
    html = etree.HTML(data)

        

        2.获取第一个li的a标签

    1.print(html.xpath("//li/a[@href='link1']"))
    2.print(html.xpath("//li[1]/a[1])

        3.获取第二个li的span标签

    1.#因为span是li的后代元素,所以要用两个//
    2.print(html.xpath("//li//span"))

        4.获取最后一个li里面的href(last的使用)

    print(html.xpath("//li[last()]/a/@href"))
    查看全部
    0 采集 收起 来源:lxml模块

    2022-04-10

    1. 设置代理——隐藏请求

    查看全部
  • 第二遍没太听懂

    查看全部
  • 搜索

    复制

    查看全部
  • 搜索

    复制

    查看全部
  • 关闭校验:verify=False


    指定证书:verify='xxx'(某个路径)

    搜索

    复制

    查看全部
  • session信息

    查看全部
  • Requests模块构造URL

    查看全部
  • PUT方法

    查看全部
  • HTTP POST方法用于提交数据(如表单)

    查看全部
  • Head方法请求部分信息

    查看全部
  • HTTP方法GET

    查看全部
  • request是一个Python三方库

    查看全部
  • import pymongo
    
    # 指定客户端连接mongodb
    pymongo_client = pymongo.MongoClient("mongodb://localhost:27017")
    # 指定数据库名称
    pymongo_db = pymongo_client["imooc"]
    # 创建集合,创建表
    pymongo_collection = pymongo_db["pymongo_test"]
    data = {
        "name": "imooc",
        "flag": 1,
        "url": "https://www.imooc.com"
    }
    mylist = [
        {"name": "imooc", "flag": "123", "url": "https://www.imooc.com"},
        {"name": "taobao", "flag": "456", "url": "https://www.imooc.com"},
        {"name": "qq", "flag": "761", "url": "https://www.imooc.com"},
        {"name": "知乎", "flag": "354", "url": "https://www.imooc.com"},
        {"name": "微博", "flag": "954", "url": "https://www.imooc.com"}
    ]
    # pymongo_collection.insert_one(data)
    # pymongo_collection.insert_many(mylist)
    # result=pymongo_collection.find({},{"_id":0,"name":1,"url":1,"flag":1})
    # result=pymongo_collection.find({},{"_id":0,"name":1,"url":1,"flag":1})
    # result=pymongo_collection.find_one()
    # print(result)
    # for item in result:
    #     print(item)
    # 大于一百
    # find_result=pymongo_collection.find({"flag":{"$gt":100}})
    # 首字母t
    # find_result=pymongo_collection.find({"name":{"$regex":"^t"}})
    # for item in find_result:
    #     print(item)
    # pymongo_collection.update_one({"name":{"$regex":"^t"}},{"$set":{"name":"baidu"}})
    # pymongo_collection.delete_one({"name":"微博"})
    pymongo_collection.delete_many({})
    查看全部
    0 采集 收起 来源:课程总结

    2021-07-11

  • import requests
    from lxml import etree
    from pymongo.collection import Collection
    import pymongo
    
    print("开始0")
    
    
    class Dangdang(object):
        mongo_client=pymongo.MongoClient(host="localhost",port=27017)
        dangdang_db=mongo_client["dangdang_db"]
        def __init__(self):
            self.header = {
                "Host": "bang.dangdang.com",
                "Connection": "keep-alive",
                "Cache-Control": "max-age=0",
                "Upgrade-Insecure-Requests": "1",
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
                "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
                "Referer": "http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-2",
                "Accept-Encoding": "gzip,deflate",
                "Accept-Language": "zh-CN,zh;q=0.9"
            }
            self.dangdang=Collection(Dangdang.dangdang_db,"dangdang")
    
        def get_dangdang(self, page):
            """发送请求到当当网获取数据"""
            url = "http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-%s" % page
            response = requests.get(url=url, headers=self.header)
            if response:
                #         html数据实例化
                # print(response.text)
                html1 = etree.HTML(response.content)
                items = html1.xpath("//ul[@class='bang_list clearfix bang_list_mode']/li")
                return items
    
    
        def join_list(self,item):
        #     处理列表→字符串
            return "".join(item)
        def parse_item(self,items):
            #         解析条目
            # 存到mongodb之前的数据
            result_list=[]
            for item in items:
                # 名称
                title=item.xpath(".//div[@class='name']/a/@title")
                # 图书评论
                comment=item.xpath(".//div[@class='star']/a/text()")
                # 作者信息
                author=item.xpath(".//div[@class='publisher_info'][1]/a[1]/@title")
                # 价格
                price=item.xpath(".//div[@class='price']/p[1]/span[1]/text()")
    
                result_list.append(
                    {
                        "title":self.join_list(title),
                        "comment":self.join_list(comment),
                        "author":self.join_list(author),
                        "price":self.join_list(price)
                    }
                )
            return result_list
        def insert_data(self,result_list):
            self.dangdang.insert_many(result_list)
    
    def main():
        d = Dangdang()
        print("开始")
        import json
        for page in range(1, 26):
            items = d.get_dangdang(page=page)
            result=d.parse_item(items=items)
            # print(json.dumps(result))
            print(result)
            # d.insert_data(result)
    
    if __name__ == '__main__':
        main()
    查看全部
    0 采集 收起 来源:课程总结

    2021-07-11

首页上一页12下一页尾页

举报

0/150
提交
取消

邀请2人参与享拼团价

  • ¥88.00

    单独购买

  • ¥1.00

    3人拼团

课程须知
Python语言开发,入门简单,人人都可以学会的爬虫课程。项目案例真实,数据量大,整套代码极简,扩展性强,通过调整修改可实现所有网页抓取。
老师告诉你能学到什么?
由浅入深入门Python爬虫开发,熟练掌握requests、xpath、MongoDB,拥有爬虫开发实战经验,解决实际工作中爬取网页问题。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!