Crossin的编程教室

标题: 一个pyquery 遍历子标签的问题 [打印本页]

作者: JasonYeung    时间: 2018-10-20 15:44
标题: 一个pyquery 遍历子标签的问题
今天在写一个猫眼电影的爬虫, 用pyquery去解析,但是有一个问题怎么都找不到解决办法,有大佬来看看吗?
如图1,我已经定位到了附件图1dl这一层了
hot = doc('#app > div > div.main > div > div:nth-child(1) > div.panel-content > dl ')

然后打算用children去遍历里面的dd标签获取每个dd里面的电影名称和评分
for item in hot.children():
    item = pq(item)
    film = item('.movie-title').text()  //电影名称
    score = item('.integer').text() + item('.fraction').text() //电影评分
    print(film,score)

但是遍历的时候输出的却只有一个item(本来是8个电影的,应该是8个item才对)
这一个item就包含了8个的信息

然后输出是这样的 :
无双 我的间谍前男友 铁血战士 宝贝儿 嗝嗝老师 找到你 雪怪大冒险 无敌原始人 8. 8. 5. 9. 9. 9.9 2 5 4 0 2
正确的格式应该是一个电影名加一个评分才对哎
感觉是这个遍历有问题 咋整?

QQ截图20181020153741.png (39.78 KB, 下载次数: 252)

图1

图1


作者: crossin先生    时间: 2018-10-21 13:23
hot.children、item、film、score,这里面每一个变量,你都把他们的值和类型 print 出来看,再分析如何处理。这就是调试的过程,前几天公众号里关于debug文章就讲过

光看着裸代码,谁都很难看出问题
作者: JasonYeung    时间: 2018-10-21 15:55
好嘞,后面又去调试,然后发现去抓movie-item这个属性就可以抓到了
另外还有一个问题,就是IP代理池的验证那里 http://ddns.oray.com/checkip 这个链接是怎么用的呢
# 请求检测 IP 网站
        try:
            req = requests.get(url=urls[0], proxies=proxy, timeout=2)
            assert req.status_code == 200
            res = self._extract_ip(req.text)
            assert bool(res) == True

        except:
            return False
这一段检测IP网站的意思是什么哎,我看不太懂,
我拿了一个IP去跑这一段 然后返回的是我本机的IP?
proxy = {
    'http':'115.46.76.173:80 '
}
http_check_url = 'http://ddns.oray.com/checkip'
r = requests.get('http://ddns.oray.com/checkip',proxies=proxy)
print(r.status_code)
print(r.text)
res = extract_ip(r.text)
print(res)

作者: crossin先生    时间: 2018-10-21 21:56
JasonYeung 发表于 2018-10-21 15:55
好嘞,后面又去调试,然后发现去抓movie-item这个属性就可以抓到了
另外还有一个问题,就是IP代理池的验证 ...

如果你看到的是本机ip,说明你这个ip没有起到伪装ip的作用
作者: JasonYeung    时间: 2018-10-21 22:40
本帖最后由 JasonYeung 于 2018-10-21 22:50 编辑
crossin先生 发表于 2018-10-21 21:56
如果你看到的是本机ip,说明你这个ip没有起到伪装ip的作用

我弄懂了 测试IP的网站由http和https的区别 谢谢crossin先生哈





欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5