python爬取快代理

小白学习之路python爬虫

学爬虫也有一两周了今天首次爬取快代理记录一下所遇到的问题
来啦来啦!

直接上代码可直接套用!

  import time
    import requests
    from lxml import etree
    import re
    from selenium import webdriver
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    path = r'谷歌路径'
    client = webdriver.Chrome(executable_path=path,chrome_options=chrome_options)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16",
    }
    str_list = []
    def dispose_url(get_url):
        start_page = int(input('起始页码:'))
        end_page = int(input('结束页码:'))
        #生成url
        for page in range(start_page,end_page + 1):
            # print(page)
            url = get_url + str(page) + '/'
            request(url)
    def request(url):
        client.get(url)
        time.sleep(2)
        content_str = client.page_source
        str_list.append(content_str)
    def content_str(string):
        IP = re.findall('<td data-title="IP">(\d.*?)</td>', str(string))
        PORT = re.findall('<td data-title="PORT">(\d.*?)</td>', str(string))
        # port = len(PORT)
        for x, y in zip(IP, PORT):
            IP_PORT = x + ':' + y + '\n'
            with open('ip_port.txt','a+') as fp:
                fp.write(IP_PORT)
                print('成功爬取并写入%s' %IP_PORT)
    def main():
        get_url = 'https://www.kuaidaili.com/free/inha/'
        dispose = dispose_url(get_url)
        for string in str_list:
            content_str(string)
    if __name__ == '__main__':
        main()

遇到的问题!ing 030!!

爬取思路:
1,目标url
2,发起请求获取相应
3,xpath解析相应获取需要的ip and port
4,写入文件
问题来啦!!!
在实际爬取中因为不熟练遇到的问题!!!
/**/
在我获取响应的时候发现响应内容里没有ip和port所以我用xpath的时候获取到的是一个空列表
####最后的解决方案是用无头浏览器
####模拟真实访问推荐用(phantomjs,谷歌)建议谷歌

>>>ip_list = terr.xpath('//tbody[@class]/tr[@class]/td[@data-title="IP"]')[0]
>>>port_list = terr.xpath('//tbody[@class]/tr[@class]/td[@data-title="PORT"]')[0]
>>>[ ]

于是我就怀疑是通过js动态加载于是我就去捕获他 的接口令人失望的 是我竟然没找出来哪个接口(难受ing)于是请教了同届大佬无果,最后我拿出了杀手锏(无头谷歌浏览器)经过度娘的’调教’成功用上了附上用法

>>>from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
path = '路径'
client = webdriver.Chrome(executable_path=r'path',chrome_options=chrome_options)

终于拿到了ip和port不为空的数据了(开心0^0 )可是一切并没有那么顺利解决了一个问题也出现了下一个问题 ing !!
返回的数据是一个str字符串形式那就意味着用不了xpath(可怜的我只会xpath)经过我各种收集信息各种百度最后用了
正则表达式(现学现卖)###可轻喷###
参考文章
好了一切假装很顺利的亚子(内心的苦谁懂!)
最后最后
用正则成功匹配到了相应的ip和port但是得到的是两个列表一个是全部的ip一个是全部的port那我们要的
格式是ip:port可是两个列表的合并我用了很多方法都已失败告终!!最后参考了某大佬的文章解决了感谢一下…额忘了地址了…
最后如愿以偿地拿下啦!!!

成果展现

在这里插入图片描述

欢迎评论指正***

##后期考虑加入多线程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: 要使用Python爬取评论,你可以使用requests库来获取目标网页的内容。首先,你需要定义一个函数来获取网页内容,可以参考以下代码: ```python import requests def getHTMLText(url): try: r = requests.get(url, timeout=30) r.raise_for_status() r.encoding = "utf-8" return r.text except: return "" ``` 这个函数会返回目标网页的HTML内容。接下来,你可以使用这个函数来获取评论的内容。你需要构建查询参数,并使用循环来爬取多页评论。请注意,商品评论最多只能显示100页,每页有10条评论,总共最多1000条评论。如果你想要爬取更多的评论,你需要去爬取app。另外,为了避免被反爬,你可以使用付费代理或设置延迟时间。希望这些信息对你有帮助!\[1\]\[3\] #### 引用[.reference_title] - *1* *2* [使用python爬取网页评论](https://blog.csdn.net/csdn_1232/article/details/90114339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python爬取某东商品的评论 超详细 附有完整代码(下)](https://blog.csdn.net/qq_65898266/article/details/124678482)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值