【问题标题】:python - how to get page number as a variablepython - 如何获取页码作为变量
【发布时间】:2017-05-18 08:56:35
【问题描述】:

我试图取消一些电影评论和评级,如果没有更多评论和评级,我试图结束此代码。

page = 1  #'variable' page
blankList = []
while True:
    url = "http://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=99715&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false&page={}".format(page) 
    res = requests.get(url)
    bs = BeautifulSoup(res.text, "lxml")
    valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

    ###the upper code won't work when 'variable page' is bigger than 'maximum page'. if so, it returns blank List.

    page = page + 1
    score_result = bs.find("div", {'class': 'score_result'})
    for review_one in score_result.findAll('li'):
        score = int(review_one.find("div", {'class': 'star_score'}).find('em').text)
        reple = review_one.find('div',{'class': 'score_reple'}).find('p')
        for span in reple.findAll('span'):
            span.extract()
        reple = reple.text
        print("reple: {}, score: {}".format(reple, score))

    if (valueList == blankList):
        break

所以我遇到的问题有点简单。您可能会知道这部分不起作用

valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

假设最大页码为 100,当我在 variable 页面中输入 20 时,

url = "http://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=99715&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false&page={}".format(page)

这部分没有问题,当我在这里输入20时(实际页码)

valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

它会返回这个列表。

['input id="page" name="page" type="hidden" value="20"/>]

但是当我尝试输入 200 时(在他们两个中) 第一个代码不会显示错误,但是

valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

返回空白列表,因为没有200页码。


我需要的是:

  1. 提取此列表中value 的值,并将其设置为变量。 在这个列表中,我需要的是 87。

    ['input id="page" name="page" type="hidden" value="87"/>]

  1. 有没有办法将变量放入findAll 函数中?

    • 当我运行这段代码时会弹出这个列表 bs.findAll("input"):

      ['input type="hidden" name="onlyActualPointYn" id="onlyActualPointYn" value="N">, 'input type="hidden" name="movieCode" id="movieCode" value="99715" >, 'input type="hidden" name="order" id="order" value="sympathyScore">, 'input type="hidden" name="page" id="page" value="75">, 'input type="hidden" name="point" id="point" value="0">]

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    请按如下所述更改行,

    valueList = bs.findAll("input",{'value':"{}".format(str(page))})
    

    此程序不会退出,因为每个页码对于此 url 都是有效的。如果您有五个 777777777 ,它也是一个有效的页码。你可以在浏览器中试一试。

    输出:

    reple: 이영화 시사회에서 봤는데 15세는 진짜 말이 안된다. 그래도 엄청 재밌습니다.  , score: 10
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      相关资源
      最近更新 更多