python小项目一

作者: 三横一竖是我 | 来源:发表于2018-07-22 22:55 被阅读41次

7-22

爬虫猫眼top100电影

参看内容:https://www.bilibili.com/video/av21857172/?p=14
https://blog.csdn.net/yaoyefengchen/article/details/79025943
1.查找单页内容
2.正则表达式使用
3.多线程抓取

查找单页内容

猫眼榜单→右键→检查

左上角箭头符号,然后选中网页内容,就大概知道所要爬取的内容对应的位置

import requests
from requests.exceptions import RequestException

def get_one_page(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            return response.text
            return None
    except RequestException:
        return None

def main():
    url = 'http://maoyan.com/board/4'
    html = get_one_page(url)
    print(html)

if __name__ == '__main__':
    main()
然后结果就有点小尴尬了 2.PNG

稍作修改```
def get_one_page(url):
kv = {"user-agent": "Mizilla/5.0"}

try:
    rep = requests.get(url, headers=kv)
    if rep.status_code == 200:
        return rep.text
except RequestException:
    return None```运行成功

然后这个就是我第六天的文章里处理请求头修改,一般来说简单的反爬就是检查user-agent
其他的运行就都ok

正则表达式的使用

对比一下代码和要爬取的内容

pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name">'
        + '<a.*?>(.*?)</a>.*?"star">(.*?)</p>.*?releasetime">(.*?)</p>'
        + '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)
<dd>
                        <i class="board-index board-index-10">10</i>
    <a href="/films/2760" title="魂断蓝桥" class="image-link" data-act="boarditem-click" data-val="{movieId:2760}">
      <img src="//ms0.meituan.net/mywww/image/loading_2.e3d934bf.png" alt="" class="poster-default" />
      <img data-src="http://p0.meituan.net/movie/46c29a8b8d8424bdda7715e6fd779c66235684.jpg@160w_220h_1e_1c" alt="魂断蓝桥" class="board-img" />
    </a>
    <div class="board-item-main">
      <div class="board-item-content">
              <div class="movie-item-info">
        <p class="name"><a href="/films/2760" title="魂断蓝桥" data-act="boarditem-click" data-val="{movieId:2760}">魂断蓝桥</a></p>
        <p class="star">
                主演:费雯·丽,罗伯特·泰勒,露塞尔·沃特森
        </p>
<p class="releasetime">上映时间:1940-05-17(美国)</p>    </div>
    <div class="movie-item-number score-num">
<p class="score"><i class="integer">9.</i><i class="fraction">2</i></p>  

然后其实自己正则表达式也不太熟悉,要好好研究一下,把之前文章的链接找出来看看

多线程抓取

多线程抓取异步主要是为了加快抓取速度
目前也不是很了解,就找些资料看看
https://blog.csdn.net/cymy001/article/details/78218024
https://blog.csdn.net/ztf312/article/details/78858512

相关文章

网友评论

    本文标题:python小项目一

    本文链接:https://www.haomeiwen.com/subject/vwklmftx.html