zoukankan      html  css  js  c++  java
  • 爬虫学习 -- day1

    • 目标:爬取猫眼电影排名前一百的数据

    源码:

    import requests
    import re
    
    def get_one_page(url):
        headers={"User-Agent":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}
        response = requests.get(url,headers=headers)
        response.encoding = 'utf-8'
        if response.status_code == 200:
            return response.text
        else:
            return response.status_code
    
    def parse_one_page(html):
        pattern = re.compile('<dd>.*?board-index.*?>(d+)</i>.*?title="(.*?)".*?<p class="star">(.*?)</p>.*?</dd>',re.S)
        items = re.findall(pattern, html)
        for item in items:
            a=(item[0]+"          "+item[1]+"          "+item[2].strip())
            write_to_file(a)
    
    def write_to_file(a):
        fp=open('result.txt','a',encoding='utf-8')
        fp.write(a+"
    ")
    
    
    def main():
        for i in range(0,10):
            j=i*10
            url="https://maoyan.com/board/4?offset="+str(j)
            print(url)
            html = get_one_page(url)
            parse_one_page(html)
    
    
    if __name__ == '__main__':
        main()

    • 遇到的问题

    1)访问网站时出现中文乱码。

    解决办法:查看网页源码找到 charset 找到对应的编码

     过后设置请求时的 encoding

    2)访问网站时被有反爬虫机制,该网站具有UA检测。

    解决办法:

    添加 user-agent 头

    3)写入文件时乱码。

    解决办法:

    小知识:

    如果嫌慢可以利用进程池,但是这里为了排序我没有用,用了进程池回很快,需要添加或者改变的代码如下。

    
    
    from multiprocessing import Pool

    from
    def
    main(offset): url = "https://maoyan.com/board/4?offset="+str(offset) html = get_one_page(url) parse_one_page(html) if __name__ == '__main__': pool = Pool() pool.map(main, [i*10 for i in range(1,10)])

    stirp()  去掉空格和回车

  • 相关阅读:
    java基础:3.1 一维数组、foreach、数组复制
    java基础:2.1 方法、重载、随机字符、方法抽象
    java基础:1.2 输入重定向、输出重定向
    java基础:1.1 基础知识速学,程序练习进制转换
    计算机网络:网络安全
    计算机网络:运输层
    整个servlet类的继承体系
    使用IDEA创建Servlet程序
    通过继承HttpServlet类实现servlet程序
    servlet中get和post请求的分发处理
  • 原文地址:https://www.cnblogs.com/tlbjiayou/p/12594057.html
Copyright © 2011-2022 走看看