如何使用python简单的爬取微博搜索的内容

UI界面输入关键词用python爬取微博内容

第一步:创建main.py文件,用来作为主类。

在main.py文件中进行以下操作。
一、程序入口,明白接下来进行的操作
1、加载UI界面。
2、爬取网页内容。


#程序入口
if __name__ == "__main__":
    t1=threading.Thread(target=thread_one)            #创建t1线程用于加载UI界面
    t1.start()                                        #启动t1线程
 
    t3=threading.Thread(target=thread_three)          #创建t3线程用于检测UI界面中的输入框是否有输入
    t3.start()                                        #启动t3线程
    t4=threading.Thread(target=thread_four)           #创建t4线程用于循环获取UI界面输入框中的内容

使用tkinter创建简单的UI界面。

创建UI.py文件
UI界面代码如下:

from tkinter import *


class ui(object):
    test = False
    txt=''
    def loading(self):
        root = Tk()
        root.title("微博爬取器")
        root.geometry("600x400")
        #创建文本框
        return root

       

    def Text(self,root):
        text=Entry(root,bd=0)
        text.place(x=200, y=180, width=175, height=40)
        return text
    
    
    #第一种方法
    # @staticmethod
    # def fuc(text):
    #     # 获取用户输入
    #     txt = text.get()
    #     print(txt)

    
    # 第二种方法
    def fuc(self,text):
        # 获取用户输入
        # ui.txt = text.get()
        print("执行了")

        ui.test=True


    # 创建搜索按钮
    def ButtoN(self,root,text):
        button=Button(root,command=lambda: ui.fuc(self,text))
        button.place(x=390, y=180, width=40, height=40)



    def show(self,root):
        root.mainloop()


完整main.py文件示例如下:

# from selenium import webdriver
# from selenium.webdriver.chrome.options import Options
# from selenium.webdriver.common.keys import Keys
import time,threading
from UI import ui
from lxml import etree
import requests

#加载UI用户界面
list_var=[]                           #list_var用于接收从UI界面中输入框里获取的内容
test=False                            #test用于作为检测是否可以执行thread_two()方法的条件。如果test为True则会被t3线程检测到,从而
                                      #执行thread_two()方法。为False则会不做处理。
list_var1=[]                          #list_var1
def thread_one():
        gc = ui()                     #创建UI文件里的ui类的实例对象gc
        root = ui.loading(gc)         #调用ui类的loading()方法并传入实例对象,返回得到主界面对象root
        global list_var1              #在thread_one()方法中对其声明使用全局成员列表list_var1
        text = ui.Text(gc, root)      #调用ui类的Text()方法传入实例对象gc与主界面对象root,并返回得到文本框控件对象text
        list_var1.append(text)        #将文本框控件对象text添加到列表list_var1中,方便之后使用这个对象
        ui.ButtoN(gc, root, text)     #使用ui类的ButtoN的方法(),并传入实例对象gc、主界面对象root、文本框控件对象text
        t4.start()                    #启动t4线程
        ui.show(gc, root)             #调用ui
Python Selenium是一款强大的浏览器自动化测试工具,也可以用于网页抓取,包括微博这类网站的数据获取。要在Python使用Selenium爬取微博关键词,你可以按照以下步骤操作: 1. 安装依赖:首先需要安装`selenium`, `webdriver_manager`(管理浏览器驱动)以及可能针对特定微博页面解析的`BeautifulSoup`库。可以使用pip命令进行安装: ``` pip install selenium webdriver_manager beautifulsoup4 ``` 2. 初始化浏览器:根据你要使用的浏览器(如Chrome、Firefox),下载对应的WebDriver,并通过`webdriver_manager`加载它: ```python from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) ``` 3. 访问微博并登录(如果需要): ```python driver.get('https://weibo.com') # 如果有登录页,执行登录逻辑 login_button = driver.find_element_by_xpath('//button[@type="submit"]') # 示例元素定位,替换为实际的登录按钮XPath或CSS选择器 login_button.click() ``` 4. 搜索关键词并获取数据使用Selenium模拟用户输入搜索框,然后点击搜索按钮: ```python search_bar = driver.find_element_by_id('kw') # 取消注释此行并替换为实际的搜索框ID search_bar.send_keys('关键词') search_button = driver.find_element_by_xpath('//input[@value="搜尋"]') # 示例搜索按钮XPath,替换为实际的搜索按钮 search_button.click() # 等待页面加载,获取搜索结果 time.sleep(5) # 为了给搜索引擎足够时间加载结果 results = driver.find_elements_by_css_selector('.search-result-item') # 这里假设搜索结果是一个CSS类,根据实际情况调整 ``` 5. 解析数据并保存: 对每个搜索结果,你可以使用BeautifulSoup或其他HTML解析库提取包含关键词的相关信息,例如标题和链接: ```python for result in results: title = result.find_element_by_css_selector('.title').text link = result.find_element_by_css_selector('.link').get_attribute('href') print(f"标题: {title}, 链接: {link}") ``` 6. 结束任务并关闭浏览器: ```python driver.quit() ``` 注意:网络爬虫的使用需遵守目标网站的robots.txt协议,尊重版权,并确保不对服务器造成过大的负担。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值