Windows 10 Home 64位 Python 2.7(也在3.3中尝试过) Pycharm社区2006.3.1
非常陌生,所以请耐心等待。
我想编写一个将转到Google的脚本,输入搜索词组,单击“搜索”按钮,查看搜索结果中的URL(或任何字符串),如果该页面上没有结果,请单击下一步按钮并在后续页面上重复,直到找到URL,停止并打印找到结果的页面。
老实说,我不在乎它是否只是在后台运行并给我结果。起初我试图让它在浏览器上打开,通过Xpath找到浏览器对象(搜索字段和搜索按钮)并执行它。
您可以看到我安装并尝试过的模块。我已经尝试了几天我在StackOverflow上找到的所有代码示例,所以列出我尝试过的所有内容都会非常罗嗦。
如果有人告诉我哪些模块最有效,那么任何其他方向都会非常感激!
我为此尝试过的具体模块是Selenim,剪贴板,MechanicalSoup,BeautifulSoup,webbrowser,urllib,enter image description here unittest和Popen。
提前谢谢! Chantz
import clipboard
import json as m_json
import mechanicalsoup
import random
import sys
import os
import mechanize
import re
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import unittest
import webbrowser
from mechanize import Browser
from bs4 import BeautifulSoup
from subprocess import Popen
######################################################
######################################################
# Xpath Google Search Box
# //*[@id="lst-ib"]
# Xpath Google Search Button
# //*[@id="tsf"]/div[2]/div[3]/center/input[1]
######################################################
######################################################
webbrowser.open('http://www.google.com')
time.sleep(3)
clipboard.copy("abc") # now the clipboard content will be string "abc"
driver = webdriver.Firefox()
driver.get('http://www.google.com/')
driver.find_element_by_id('//*[@id="lst-ib"]')
text = clipboard.paste("abc") # text will have the content of clipboard
print('text')
# browser = mechanize.Browser()
# url = raw_input("http://www.google.com")
# username = driver.find_element_by_xpath("//form[input/@name='username']")
# username = driver.find_element_by_xpath("//form[@id='loginForm']/input[1]")
# username = driver.find_element_by_xpath("//*[@id="lst-ib"]")
# elements = driver.find_elements_by_xpath("//*[@id="lst-ib"]")
# username = driver.find_element_by_xpath("//input[@name='username']")
# CLICK BUTTON ON PAGE
# http://stackoverflow.com/questions/27869225/python-clicking-a-button-on-a-webpage
答案 0 :(得分:2)
Selenium实际上是一个用于此脚本的简单/好的模块;在这种情况下,你不需要任何其他东西。实现目标的最简单方法可能是:
from selenium import webdriver
import time
driver = webdriver.Firefox()
url = 'https://www.google.nl/'
linkList = []
driver.get(url)
string ='search phrase'
text = driver.find_element_by_xpath('//*[@id="lst-ib"]')
text.send_keys(string)
time.sleep(2)
linkBox = driver.find_element_by_xpath('//*[@id="nav"]/tbody/tr')
links = linkBox.find_elements_by_css_selector('a')
for link in links:
linkList.append(link.get_attribute('href'))
print linkList
此代码将打开您的浏览器,输入您的搜索短语,然后获取不同页码的链接。从这里开始,您只需编写一个循环,输入浏览器中的每个链接,并查看搜索短语是否存在。
我希望这会有所帮助;如果您有其他问题,请告诉我。