Java 如何读取在其他html之后加载的html?
好吧,对不起,这个问题是废话。很难提出一个问题:P 如果你在dictionary.com或任何不规则动词中输入类似于think的单词,那么发音[thawt]会在html的其余部分之后加载 如果你检查我的代码,你就会明白我的意思。它没有[解冻]而是装载[东西]Java 如何读取在其他html之后加载的html?,java,regex,bufferedreader,Java,Regex,Bufferedreader,好吧,对不起,这个问题是废话。很难提出一个问题:P 如果你在dictionary.com或任何不规则动词中输入类似于think的单词,那么发音[thawt]会在html的其余部分之后加载 如果你检查我的代码,你就会明白我的意思。它没有[解冻]而是装载[东西] package OEpr; import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.Toolkit; import javax.swing.JFra
package OEpr;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JTextField;
public class OEpr {
private JFrame frame;
private JTextField txtWord;
private JTextField textpron;
/**
* Launch the application.
*/
private static String wordurl;
private static String line;
private int linenum;
private static int findingfirst = 0;
private static String pron;
StringSelection testcopy;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
OEpr window = new OEpr();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public OEpr() {
initialize();
setvars();
}
public void setvars() {
OEpr.wordurl = "http://dictionary.reference.com/browse/"
+ txtWord.getText();
}
public void geturl(String[] args) throws Exception {
// Set URL
URL url = new URL(wordurl);
URLConnection spoof = url.openConnection();
// Spoof the connection so we look like a web browser
spoof.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)");
BufferedReader in = new BufferedReader(new InputStreamReader(
spoof.getInputStream()));
String uline = "";
// Loop through every line in the source
while ((uline = in.readLine()) != null) {
System.out.println(uline);
line = uline;
linecheck();
}
// System.out.println(OEpr.line);
}
private void linecheck() {
Pattern pattern = Pattern.compile("<!-- google_ad_section_start -->");
Pattern pattern2 = Pattern.compile("\\[.*?]");
Matcher matcher = pattern.matcher(OEpr.line);
if (matcher.find()) {
findingfirst++;
// if(findingfirst==2){
String noHTML = line.replaceAll("\\<.*?>", "");
Matcher matcher2 = pattern2.matcher(noHTML);
if (matcher2.find()) {
pron = noHTML.replaceAll("(^.*(?=\\[))|((?<=\\]).*$)", "");
// System.out.println(pron);
textpron.setText(pron);
}
// }
// System.out.println(matcher.group(0)); //prints /{item}/
} else {
// System.out.println("Match not found");
}
}
public void setClipboardContents(String aString) {
testcopy = new StringSelection(pron);
Toolkit.getDefaultToolkit().getSystemClipboard()
.setContents(testcopy, null);
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setAlwaysOnTop(true);
frame.setResizable(false);
frame.setSize(210, 100);
JButton btnGo = new JButton("Go!");
btnGo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Execute when button is pressed
try {
setvars();
OEpr.findingfirst = 0;
geturl(null);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
JButton btnCopy = new JButton("Copy!");
btnCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Execute when button is pressed
try {
setClipboardContents(null);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
txtWord = new JTextField();
txtWord.setText("thought");
txtWord.setColumns(10);
textpron = new JTextField();
textpron.setColumns(10);
GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
groupLayout
.setHorizontalGroup(groupLayout
.createParallelGroup(Alignment.LEADING)
.addGroup(
Alignment.TRAILING,
groupLayout
.createSequentialGroup()
.addGroup(
groupLayout
.createParallelGroup(
Alignment.LEADING)
.addGroup(
groupLayout
.createSequentialGroup()
.addContainerGap(
GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(
txtWord,
GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addPreferredGap(
ComponentPlacement.RELATED))
.addGroup(
groupLayout
.createSequentialGroup()
.addContainerGap()
.addComponent(
textpron,
GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addPreferredGap(
ComponentPlacement.RELATED)))
.addGroup(
groupLayout
.createParallelGroup(
Alignment.LEADING)
.addComponent(btnGo)
.addComponent(btnCopy))
.addContainerGap()));
groupLayout
.setVerticalGroup(groupLayout
.createParallelGroup(Alignment.LEADING)
.addGroup(
groupLayout
.createSequentialGroup()
.addContainerGap()
.addGroup(
groupLayout
.createParallelGroup(
Alignment.BASELINE)
.addComponent(btnGo)
.addComponent(
txtWord,
GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE))
.addPreferredGap(
ComponentPlacement.RELATED)
.addGroup(
groupLayout
.createParallelGroup(
Alignment.BASELINE)
.addComponent(btnCopy)
.addComponent(
textpron,
GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE))
.addContainerGap(
GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)));
frame.getContentPane().setLayout(groupLayout);
}
}
包装OEpr;
导入java.awt.EventQueue;
导入java.awt.GridLayout;
导入java.awt.Toolkit;
导入javax.swing.JFrame;
导入javax.swing.JButton;
导入java.awt.GridBagLayout;
导入java.awt.GridBagConstraints;
导入java.awt.datatransfer.Clipboard;
导入java.awt.datatransfer.ClipboardOwner;
导入java.awt.datatransfer.StringSelection;
导入java.awt.datatransfer.transfer;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.net.URL;
导入java.net.URLConnection;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
导入javax.swing.GroupLayout;
导入javax.swing.GroupLayout.Alignment;
导入javax.swing.LayoutStyle.ComponentPlacement;
导入javax.swing.JTextField;
公共级OEpr{
私有JFrame;
私有JTextField-txtWord;
私有JTextField textpron;
/**
*启动应用程序。
*/
私有静态字符串wordurl;
专用静态字符串线;
私有int-linenum;
私有静态int findingfirst=0;
私有静态字符串pron;
选择测试拷贝;
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
OEpr窗口=新OEpr();
window.frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建应用程序。
*/
公共OEpr(){
初始化();
setvars();
}
公共void setvars(){
OEpr.wordurl=”http://dictionary.reference.com/browse/"
+getText();
}
public void geturl(字符串[]args)引发异常{
//设置URL
URL=新URL(wordurl);
URLConnection spoof=url.openConnection();
//欺骗连接,使我们看起来像一个网络浏览器
spoof.setRequestProperty(“用户代理”,
“Mozilla/4.0(兼容;MSIE 5.5;Windows NT 5.0;H010818)”;
BufferedReader in=新的BufferedReader(新的InputStreamReader(
spoof.getInputStream());
字符串uline=“”;
//循环源中的每一行
而((uline=in.readLine())!=null){
系统输出println(uline);
直线=乌司他林;
linecheck();
}
//系统输出打印LN(OEpr线);
}
私有void linecheck(){
Pattern=Pattern.compile(“”);
Pattern pattern2=Pattern.compile(“\\[.*?]”);
匹配器匹配器=模式匹配器(OEpr.line);
if(matcher.find()){
findingfirst++;
//如果(findingfirst==2){
字符串noHTML=line.replaceAll(“\\”,“”);
Matcher matcher2=pattern2.Matcher(noHTML);
if(matcher2.find()){
pron=noHTML.replaceAll((^.*(=\\[))|((?我想你是在问。如果我理解你的意思,页面加载了,它说了某件事,然后它执行ajax脚本并更改其中的文本。但是当你加载它时,你没有运行ajax脚本,因此你无法获得它。你需要知道他们运行的脚本是什么,以及他们将它发送到哪里(操作)。一旦这样做,您就可以将相同的内容发送到服务器并获得您正在寻找的响应。它将返回Json或html文本,然后您需要在同一位置进行替换。如果是这样,请在脚本文件中查找与替换的相同id相匹配的内容